vim 시리즈는 김선영 선생님의 저서인 '손에 잡히는 Vim'을 정리한 것이다.
[ ]는 생략 가능 옵션을 의미한다.그러나 vim에는 vi에 존재하는 3가지 모드에 visual mode가 추가되어 4개의 모드가 존재한다.
다음은 vi에 존재하는 모드와 모드를 전환하기 위한 키(key)를 정리한 그림이다.

현재 내가 어떤 모드인지 잘 모르겠을 땐, 그냥 ESC 누르는 습관을 가지면 좋다.
그러면 normal mode로 나오게 된다.
vim 명령어에는 크게 두가지가 있다.
쉽게 구분할 수 있다.
:가 붙어 하단의 명령행에 글자가 보이는 명령어가 명령행 모드 명령어다.명령행 모드 명령어를 일반 모드 명령어보다 우선시 하는 것을 추천한다.
| 명령어 | 설명 |
|---|---|
| :w | 현재 파일을 저장한다. (write) |
| :q | vi를 종료한다. (quit) |
| :wq | 현재 파일을 저장하고 종료한다. |
| :w filename | 다른 이름으로 저장한다. |
| :q! | 변경된 내용을 저장하지 않고 vi를 종료한다. |
| :w! filename | 덮어 쓴다. |
| :wq! filename | 파일을 덮어쓰고 종료한다. |
| :x | Vim을 종료하면서 변경 사항이 있는 경우에만 저장한다. |

| 명령어 | 설명 |
|---|---|
| ^ | 현재 행의 맨 앞으로 커서를 이동한다. |
| $ | 현재 행의 맨 끝으로 커서를 이동한다. |
#은 숫자, [ ]는 생략가능함을 나타낸다.| 명령어 | 설명 |
|---|---|
| [#]gg | #행으로 이동한다. (#이 생략되면 1을 의미한다.) |
| [#]G | #행으로 이동한다. (#이 생략되면 마지막 행을 의미한다.) |
| :# | #행으로 이동한다. |
| 명령어 | 설명 |
|---|---|
CTRL-F | 한 화면 아래로 커서 이동 (forth) |
CTRL-B | 한 화면 위로 커서 이동 (back) |
CTRL-D | 반 화면 아애로 커서 이동 (down) |
CTRL-U | 반 화면 위로 커서 이동 (up) |
Page Up | 한 화면 위로 커서 이동 |
Page Down | 한 화면 아래로 커서 이동 |
normal mode 명령어 앞에 숫자를 붙이면, 해당 숫자만큼 명령어를 반복한다.
🔍ex)
| 명령어 | 설명 |
|---|---|
| 3h | 커서를 아래로 내리는 명령을 3번 반복한다. 즉, 3칸 이동한다. |
| 3x | 커서가 가리키는 문자를 삭제하는 명령을 3번 반복한다. |
3gg는 gg명령어를 3번 실행하는 것이 아닌, 3번 행으로 이동하라는 명령어다.3G도 마찬가지다.| 명령어 | 설명 |
|---|---|
| Ctrl + g | 문서에서 현재 행의 위치 정보를 하단 상태바에 표시한다. |
| 명령어 | 설명 |
|---|---|
| a (amend) | 현재 커서 위치에서 한 칸 뒤로 이동한 후 insert mode로 전환된다. |
| A | 현재 행의 끝으로 이동 한 후 입력 모드로 전환된다. |
| i (insert) | 현재 커서 위치에서 insert mode로 전환된다. |
| I | 현재 행 맨 앞으로 이동한 후 insert mode로 전환된다. |
| o (open line) | 현재 행 아래에 새로운 행을 하나 만든 후 insert mode로 전환 된다. |
| O | 현재 행 위에 새로운 행을 하나 만든 후 insert mode로 전환 된다. |
| R (replace) | replace모드로 작동한다. 모든 글자는 덮어 쓰여 진다. |
| 명령어 | 설명 |
|---|---|
| x | 커서가 가리키는 문자를 삭제한다. (Delete 키와 같다.) |
| X | Backspace처럼 동작한다. |
| dd | 현재 행을 삭제한다. |
| D | 현재 커서부터 현재 행의 끝까지 삭제한다. (d$와 동일하다.) |
| J | 아래 행을 현재 행의 끝에 붙인다. (아래 행의 앞부분 공백은 제거된다.) |
x는 신기하게 동작한다. x는 현재 커서가 가리키는 문자를 지운다.x를 꾸욱 누르고 있으면 현재 커서가 가라키는 문자부터 시작해서 맨 마지막 문자인 \n(개행 문자) 전 문자까지 지운다.Backspace처럼 동작하게 된다. | 명령어 | 설명 |
|---|---|
| yy | 현재 행을 레지스터에 복사(yank)한다. |
| :y | 현재 행을 레지스터에 복사(yank)한다. |
| Y | 현재 행을 레지스터에 복사(yank)한다. |
| 명령어 | 설명 |
|---|---|
| p | 현재 행에 붙여 넣는다. 개행문자가 포함된 경우에는 현재 행 아래에 붙여 넣는다. |
| :pu | p명령과 동일하다. |
| P | 현재 행의 위쪽에 붙인다. |
vim에서 주석문(comment)은 "로 만들 수 있다.
🔍ex)
" Hello World
| 명령어 | 설명 |
|---|---|
| u | 명령어 실행 취소 (undo) |
| Ctrl-R | 명령어 다시 실행 (redo) |