VIM(VI iMproved)은 텍스트 편집기인 VI를 쓰기 쉽게 만든 프로그램입니다. VI만 가지고 코드를 쓰기엔 이것저것 불편한 점이 있어 기능을 추가한 버전이 VIM입니다(이후 VI와 VIM을 동일시 하겠습니다). VIM의 초기 진입 장벽과 vscode와 같은 강력한 텍스트 편집기로 쓰는 일이 드물지만 CLI 환경에서 VIM은 한 줄기 빛과 같은 존재입니다. 필자는 VIM을 제대로 다루지 못하지만 좋아하는 프로그램 중 하나입니다. VIM이 어떤 물건인지 간단하게 설명하는 시간을 갖도록 하겠습니다.

VIM은 어렵습니다. GUI 환경에 익숙한 저희는 CLI 텍스트 편집기 사용이 고역입니다. 처음 VIM을 사용한다면 어떻게 텍스트를 입력하는지 어떻게 VIM을 종료시켜야 할지 감이 도통 오지 않을 겁니다. VIM의 모드를 알아가면 이를 쉽게 이해할 수 있습니다. VIM은 4가지 모드가 존재합니다.

  1. 일반 모드(Normal Mode)
  2. 입력 모드(Insert Mode)
  3. 비주얼 모드(Visual Mode)
  4. 명령 모드(Command Mode or ex Mode)

여기서 가장 헷갈리고 어색한 부분이 일반 모드입니다. 보통의 텍스트 편집기는 바로 텍스트를 복사, 삽입, 수정, 삭제가 가능하지만, VIM은 단축키를 가지고 이를 수행합니다. 예를 들어, 한 줄 전체를 지우고 싶다면 평소 같으면 한 줄을 마우스 드래그하여 지웠지만 VIM은 일반 모드 상태에서 dd라는 명령으로 지웁니다. 너무나 어색한 방법이지만 나름 CLI 환경에 최적화 되고 오로지 키보드만 가지고 모든 일을 할 수 있는 방법입니다.

이제 기본적인 단축키들을 알아봅시다. 필자도 모든 단축키를 아는것이 아니라 제가 주로 사용하는 VIM 생존형(사실 제가 알고만 있는..) 단축키만 모아봤습니다.

아니 무슨 에디터를 쓰는데 이런 단축키를 전부 알아야한다고요? 사실 VIM을 쓰기 위해서 문자를 입력하고(i, a) 저장하고 나가는(:wq) 단축키만 알면 됩니다. 하지만 VIM의 진가는 바로 키보드 위에서 모든 작업이 가능하게 해주는 단축키 덕분입니다. 매일 코드를 수정하는 개발자들은 조금이라도 손 피로를 줄이는 것이 좋습니다. 코드를 수정하는데 키보드와 마우스를 번갈아 가면서 작업하는 것보다 오로지 키보드 위에서만 작업을 한다면 손목 피로 부담이 덜합니다. 예를 들어, 마우스 스크롤 할 필요없이 CTRL + u, CTRL + d 으로 이동하고 마우스로 영역 선택할 필요없이 v로 비주얼 모드로 들어가서 커서 영역을 선택할 수 있습니다. 하지만 무엇보다도 필자가 가장 편하게 생각하는 기능은 커서 이동입니다. 보통 키보드 커서 이동 방향키는 오른쪽 밑에 위치합니다. 하지만 VIM의 커서 이동 단축키는 h, j, k, l으로 딱 오른손 위치에 있어 오른손 손목을 그대로 유지한 채 커서를 이동할 수 있습니다. 이 작은 차이가 생각보다 커서 이 단축키로 VIM을 애용하고 있습니다.

맥북 키보드

맥북 키보드

어때요? VIM을 쓰고 싶은 마음이 들었나요? 당장 VIM을 쓰고 싶은데 어디서부터 시작해야할지 모르는 분들을 위해 vimtutor를 추천드립니다. vimtutor는 VIM tutorial로 CLI 환경에서 단계적으로 VIM에 익숙해지도록 도와주는 설명서입니다. 리눅스 터미널 환경에 vim을 설치하면 vimtutor 명령어를 쓸 수 있습니다.