Devin.KR

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 = 여섯 낱말).