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) |