vim 연산자 — d c y 와 [연산자][이동] 문법
vim 편집의 문법은 [개수][연산자][개수][이동] 하나입니다. dw cw yy D C 를 외우는 대신 조합 규칙을 이해하는 방법을 설명합니다.
명령을 외우지 말고 문장으로 읽는다
vim 의 편집 명령은 목록이 아니라 문법입니다. 형태는 [개수][연산자][개수][이동] 이고, 영어 문장처럼 읽으면 그대로 뜻이 됩니다.
d2w 는 delete two words, c$ 는 change to end of line, y} 는 yank to next paragraph 입니다. 조합의 수는 곱셈으로 늘어나므로, 연산자 세 개와 이동 열 개를 알면 명령 서른 개를 아는 셈입니다.
연산자 세 개
연산자를 두 번 누르면 줄 단위입니다. dd cc yy 입니다. 대문자 D C Y 는 각각 d$ c$ yy 의 줄임입니다.
| 연산자 | 뜻 | 끝난 뒤 모드 |
|---|---|---|
| d | 지운다 (레지스터에 담긴다 = 잘라내기) | 노멀 |
| c | 지우고 그 자리에서 입력 | 입력 |
| y | 복사만 한다 | 노멀 |
꼭 알아야 할 예외: cw
dw 는 낱말과 그 뒤 공백까지 지우지만, cw 는 낱말 끝까지만 바꿉니다. 즉 cw 는 ce 처럼 동작합니다.
이 예외가 있는 이유는 실용적입니다. cw 로 낱말을 바꿀 때 뒤 공백까지 먹으면 새로 친 낱말이 다음 낱말과 붙어 버립니다. vim 을 오래 쓴 사람도 설명하기 어려워하는 특이점이지만, 없으면 더 불편합니다. 이 연습기도 같은 동작을 그대로 구현했습니다.
한 글자 줄임 명령
- x 글자 하나 지우기 (dl 과 같다)
- X 커서 앞 글자 지우기 (dh 와 같다)
- D 줄 끝까지 지우기 (d$)
- C 줄 끝까지 바꾸기 (c$)
- s 글자 지우고 입력 (cl)
- S 줄 내용 바꾸기 (cc)
- r 글자 하나 교체 — 모드가 바뀌지 않는다
- ~ 대소문자 뒤집기
- J 다음 줄을 이어 붙이기
그리고 . 으로 되풀이한다
연산자로 만든 변경은 . 으로 되풀이할 수 있습니다. 세 줄 끝에 세미콜론을 붙이려면 A;<Esc> 한 번을 만들고 j . j . 로 끝냅니다.
여기서 습관이 하나 생깁니다. '되풀이 가능한 단위로 편집을 쪼갠다'는 것입니다. 비주얼 모드로 넓게 고르는 대신 한 번의 깔끔한 변경을 만들고 . 으로 옮기는 쪽이 대개 빠릅니다.
자주 묻는 질문
dd 한 줄을 실수로 지웠습니다.
u 로 되돌리거나, p 로 다시 붙이세요. vim 의 지우기는 잘라내기이므로 마지막에 지운 것은 레지스터에 남아 있습니다.
d3w 와 3dw 는 다릅니까?
같습니다. 개수는 연산자 앞이나 이동 앞 어디에 붙어도 되고, 양쪽에 붙으면 곱해집니다(2d3w = 여섯 낱말).
다른 가이드
-
vim 종료·저장 방법 — :wq 부터 강제 종료까지
vim 에서 나가는 방법을 상황별로 정리했습니다. 저장하고 나가기, 저장 없이 나가기, 읽기 전용 파일 강제 저장, E37 오류 대처까지 실제 동작 기준으로 설명합니다.
-
vim 모드 완전 이해 — 노멀·입력·비주얼·명령줄
vim 이 모드를 쓰는 이유와 네 가지 모드의 차이, 모드 사이를 오가는 키를 정리했습니다. 모드를 이해하면 vim 의 나머지는 전부 이 위에 얹힙니다.
-
vim 커서 이동 총정리 — 방향키를 놓는 순서
hjkl 부터 w b e f t % gg G 까지, vim 이동 명령을 쓰는 순서대로 정리했습니다. 이동은 그 자체로도 쓰고 연산자 뒤에 붙여 범위로도 씁니다.
-
vim 텍스트 오브젝트 — ciw · ci" · di( 가 바꾸는 것
커서를 정확한 자리에 두지 않아도 편집할 수 있게 해 주는 텍스트 오브젝트를 정리했습니다. 실무에서 가장 많이 쓰는 vim 기능입니다.
-
vim 검색과 치환 — / ? n N 과 :%s 완전 정리
vim 검색 이동과 :s 치환 문법을 플래그와 범위까지 정리했습니다. 확인하며 치환하는 c 플래그, 대소문자 무시 옵션도 다룹니다.
-
처음 쓰는 .vimrc — 꼭 넣을 설정 12줄
vim 을 설치하고 처음 만드는 .vimrc 에 넣을 설정을 이유와 함께 정리했습니다. 줄번호, 검색 옵션, 들여쓰기, 클립보드까지.