Vim 이란 무엇인가?
Vim
Linux의 대표적인 텍스트 편집기 vi와 호환되는 텍스트 편집기
현재의 linux가 나오기 전에 Unix라는 OS가 있었다. 그리고 이 Unix 시절부터 사용되던 텍스트 편집기인 vi라는 것이 있었는 데 이 vi의 새로운 버전이 vim이고 그렇기 때문에 이 vim은 기존의 vi와 기본적인 기능면에 있어서 동일하다.
vim에서 가장 중요한 것은 모드를 구분하는 것이다. vim은 총 4가지 모드를 가지고 있는 데 그것은 다음과 같다.
1. 일반(Normal)모드 or 명령(Command)모드
2. 명령줄 모드(Command Line Mode)
3. 편집/입력모드(insert mode)
4. 비쥬얼 / 선택모드(Visual)
그렇다면 이 vim을 공부해야하는 이유는 무엇일까? 사실 vim을 공부하기 이전부터도 생각보다 많은 코드 편집기 종류들을 들어볼 수 있었다. VScode, atom, sunline 등 정말 많은데 이들은 gui 기반이기 때문에 사용하기도 사용자 친화적이고 여러면에서 편리하다. 그런데, 그에 반해서 vim은 까다로운 부분도 많고 불편하다. 그럼에도 불구하고 vim을 공부해야하는 이유가 무엇일까?
이유는 간단하다. 많이 필요하기 때문이다. 최근에 우리는 서버와 클라이언트 구조로 구축된 시스템을 사용하는 일들이 정말 많다. 개발자로 일하면서 인터넷 서비스를 개발하거나, 클라이언트-서버 구조의 시스템을 개발하려고 할 때 서버안에 저장되어 있는 소스코드나 문서를 수정해야하는 경우가 있다. 우리가 사용하는 수많은 소프트웨어, 프로그램 시스템들이 리눅스 서버에서 서비스가 진행되고 있는 경우가 상당히 많기 떄문에 개발자로서 폭넓게 일하기 위해서 리눅스 서버를 활용할 수 있어야 한다는 것이다. 바로 서버상에서 특정한 소스파일이나 문서파일을 편집할 때 대표적으로 사용하는 에디터가 바로 vim인 것이다.
그렇다면 위에서 언급했던 vim의 모드에 대해서 알아보도록 하겠다.
1. 일반(Normal)모드 or 명령(Command)모드
사용자가 키보드를 통해서 타이핑하는 모든 내용을 하나의 명령으로서 받아들이는 모드
해당 모드에서는 사용자가 키보드로 입력하는 모든 내용을 명령으로 인식하게 된다. 해당 모드에서는 하나의 문자도 명령으로 인식할 수 있다. 그래서 모드를 착각하고 해당모드에서 문서를 작성하듯이 타이핑을 하면 엄청난 경고음 세례를 받게된다. vim이 평소 기본으로 설정되어 있는 모드이며, 기준적인 모드라고 할 수 있다.(다른 모드로 가기 위해서는 무조건 이 모드를 거쳐야 한다.)
2. 명령줄 모드(Command Line Mode)
사용자가 입력한 문장이 특정 명령어가 되는 모드
명령줄 모드에서는 사용자가 타이핑한 키가 명령이 되는 명령모드와 달리 사용자가 완성한 문장이 특정한 명령어가 된다. 이전에 공부했던 것처럼 리눅스의 다양한 기본 명령어들이 존재하는 것처럼 vim에서도 이런 다양한 명령어가 존재한다. vim의 이러한 명령어들에 대해서는 차후에 뒤에서 알아보는 것으로 하겠다,
3. 편집/입력모드(insert mode)
입력하는 모든 내용들이 문서의 내용이 되는 모드, 단순히 타이핑할 수 있는 모드에 해당한다.
이 모드는 우리가 많이 사용하던 운영체제 환경에서 메모장을 킨 느낌이랑 유사하다. 입력하는 모든 키들이 문서의 구성내용이 된다. 그래서 우리가 생각하는 어떤 문서파일을 수정하거나 만들기 위해서는 해당 모드로 진입해야 한다.
4. 비쥬얼 / 선택모드(Visual)
문서를 구성하는 특정 부분의 내용을 선택할 때 사용하는 모드
이는 많이 사용되지는 않는 모드인데, vim 이전에 사용되던 vi에서는 특정구간을 정해서 복사와 붙여넣기를 할 때 즉, 블럭을 이용할 때 마우스를 이용하는 것이 불가능했다고 한다. 그래서 이후에 블럭에 대해서 시각적으로 확인할 수 있도록 해달라는 사용자들의 요청을 통해서 해당 모드가 탄생하게 되었다고 한다. 아직 이 모드에 대해서 많이 아는 것이 없기 때문에 더 이야기할 수 있는 것이 없지만 해당 모드에 대한 새로운 정보가 생길때마다 추가해 나가도록 하겠다.
※ 그렇다면 모드간의 전환은 어떻게 이루어지는 것인가?
기본적으로 vim을 실행하면 명령모드로 들어가게 된다. 여기서 무엇을 타이핑하는 냐에 따라서 명령대로 일이 진행되게 된다. 편집/입력(Insert) 모드로 넘어갈 때 보통 i와 a를 사용한다.(사실 이 외에 더 있다.) 다른 모드로 변경하기 위해서는 무조건 명령모드를 거쳐서 돌아가야 한다. 그래서 명령모드로 다시 돌아가려면? Esc 키를 누르면 된다.(이는 다른 모드에서도 동일하게 적용된다.) vim을 사용하던 중에 자신이 사용하던 모드를 잊어버렸을 때에도 esc키를 눌러서 빠져나오곤 한다. 커맨드 라인은 : , 비쥬얼 모드는 v or V 를 입력한다. vim에서는 모드에 따라서 사용자가 입력하는 내용이 문서의 내용이 될 수도, 명령어가 될 수도 있기 때문에 이에 대해서 신중하고 조심스럽게 사용할 필요가 있다. 항상 모드에 대해서 조심하자!
그리고 마지막으로 방향키와 관련된 언급을 하자면 Edit 모드에서는 보통 화살표 키를 가지고 이동을 한다.(상하좌우) - 마우스는 사용하지 않는다고 생각하는 것이 좋다. 간혹 어떤 소프트웨어나 터미널 프로그램의 vim에서 화살표 키가 인식이 되지 않는 경우가 있다(가끔) 예전 유닉스의 초기 vi에서는 방향키에 대한 개념이 없어서 방향키 입력을 제대로 지원하지 않았었다고 한다. 그래서 hklj를 마치 방향키처럼 활용했고 이러한 특성이 이어져와서 그런 현상이 나타나는 경우가 있다고 한다. 조금은 어색하겠지만 이렇게 방향키가 아닌 hjkl을 이용한 이동도 감각적으로 익혀두는 것이 좋을 것 같다.
'Tools > Vim' 카테고리의 다른 글
Command mode - 커서이동 (0) | 2021.02.06 |
---|---|
Command mode - 내용변경 명령 (0) | 2021.02.06 |
Command mode - undo / redo (0) | 2021.02.06 |
Command Mode - 복사/지우기/붙여넣기 명령 (0) | 2021.02.06 |
Command Mode -> Insert(Edit)모드로 진입하는 명령 (0) | 2021.02.05 |
댓글
이 글 공유하기
다른 글
-
Command mode - 내용변경 명령
Command mode - 내용변경 명령
2021.02.06 -
Command mode - undo / redo
Command mode - undo / redo
2021.02.06 -
Command Mode - 복사/지우기/붙여넣기 명령
Command Mode - 복사/지우기/붙여넣기 명령
2021.02.06 -
Command Mode -> Insert(Edit)모드로 진입하는 명령
Command Mode -> Insert(Edit)모드로 진입하는 명령
2021.02.05