vim과 visual editor가 서로 다른 선택지였을 때, 나는 vim의 필요성을 느끼지 못했다. visual editor가 편했으니까. 그런데, 최근에 visual studio를 쓰면서 ‘vim의 간단한 기능들을 쓰면 편할 텐데…’라는 생각이 들었고, 찾아보니 vim처럼 사용할 수 있는 플러그인이 존재했다.

이미지에 보이듯이 JetBrains에서 만든 IdeaVim이다. 이를 설치하면 vim처럼 편집이 가능하며, vim 설정에 가서 단축키를 IDE의 기능을 쓸지, Vim에서 정의된 기능을 쓸지 선택할 수 있다. 또한, IDE의 오른쪽 아래에서 V 아이콘을 눌러 기능의 on/off도 가능하다.

Vim을 까먹었거나 처음이라면, IdeaVim 메뉴에도 Tutor가 있지만 openvim : https://openvim.com 을 추천한다. 완전하진 않아도 기본기능과 개념을 익히기엔 충분하다.
쓴김에, vim 기본적인 키와 명령어를 정리해 보겠다. 완전하지 않은 내맘대로 정리이니, 제대로된 걸 보고 싶으면 다른 사이트를 추천한다.
참고할만한 keyboard shortcut sheet : https://elsewebdevelopment.com/ultimate-vim-keyboard-shortcuts/
따로 vim 설명은 안할거다. 모드에 대해서만 간단하게. vim에는 커서 이동이 키보드로 가능하기위해서 command mode(또는 normal mode)와 input mode(또는 edit mode)가 따로 존재한다. 여기에 보다 복잡한 커맨드를 처리하기 위한 extended command mode(또는 last line mode)가 존재하고, 마우스로 드래그 하듯 블럭선택을 가능하게 해주는 visual mode가 추가 됐다.
기본적으로 시작하면 디폴트로 command mode 상태다. 다른 모드로 갔다가도 esc를 누르면 command mode로 빠져나온다. input mode에서 다른 모드로 가려면 일단, command mode로 빠져나와야 한다. 모든 모드는 이 command mode를 거쳐간다.

어… 각종 키들도 정리하려고 했는데, vim에 대한건 다른 사이트게 너무 잘되있는게 많다. 솔직히 vim cheet sheet인 이거 하나면 될거 같다. : https://devhints.io/vim
cheet sheet만으로는 vim의 핵심 개념이 하나가 표현이 안되는데, 바로 숫자와 커맨드의 결합이다. 예를들면, “3w”를 입력하면 하나의 워드가 아니라 3개의 워드를 건너간다. “10G”를 입력하면 10번째 라인으로 이동한다. “2dd”를 입력하면 두줄을 지우고 클립보드에 복사한다(cut). 등등.

위 이미지는 아마도 이미지에 적혀있는 책에서 제공하는 것으로 보이는데, 이동키를 가장 직관적으로 보여주는거 같아 추가했다.
다음은 그냥 내가 보기위해 자주 쓰는 키만 적어보는거.
- h,j,k,l – 좌, 아래, 위, 우 이동 방향키
- Ctrl+u – 페이지 업
- Ctrl+ d – 페이지 다운
- Ctrl + b – 반페이지 업
- Ctrl + f – 반페이지 다운
- nw – 다음 n워드로 이동
- nb – 이전 워드로.
- e – 워드의 끝으로.
- 0 – 라인 시작으로.
- $ – 라인 끝으로.
- gg – 파일 시작으로.
- G – 파일 끝으로.
- nG – n번 라인으로 이동.
- u – undo
- Ctrl+r – redo
- % – 현재에 대응하는 괄호로 이동.
- d – 삭제, 워드를 지울 때, d2w 와 같이 사용.
- nx – n개 글자 지움.
- ndd – n개 라인 cut.
- p – 붙여넣기
- y – 카피
- yy – 현재 라인 카피
- . – 커맨드 반복.
- i – 현재 커서에서 입력모드로.
- a – 다음칸에 입력모드로.
- o – 아래에 새 라인을 만들고 입력모드로.
- O – 위에 새 라인을 만들고 입력모드로.
- :q – 종료.
- :q! – 강제종료.
- : w – 파일 쓰기
- : w! – 파일 강제로 쓰기.
- : wq – 파일 쓰고 종료.
- /text – 검색. 정규 표현식 사용가능.
- :n : n은 숫자로 n번째 라인으로 이동.
- n, N : 이전 검색 매칭으로 이동, 다음 검색 매칭으로 이동.