Devin.KR

vim 커서 이동 총정리 — 방향키를 놓는 순서

hjkl 부터 w b e f t % gg G 까지, vim 이동 명령을 쓰는 순서대로 정리했습니다. 이동은 그 자체로도 쓰고 연산자 뒤에 붙여 범위로도 씁니다.

연습기에서 바로 쳐 보기 치트시트

이동은 두 가지 일을 한다

vim 의 이동 명령은 커서를 옮기는 데도 쓰이고, 연산자의 범위를 정하는 데도 쓰입니다. w 가 '다음 낱말로'라면 dw 는 '다음 낱말 앞까지 지우기'입니다. 이동을 하나 익히면 그것과 조합되는 편집 명령이 통째로 따라옵니다.

그래서 배우는 순서는 '편집 명령 목록'이 아니라 '이동 목록'이어야 합니다.

1단계 — 줄 안에서

f 와 t 의 차이가 처음엔 헷갈립니다. f) 는 닫는 괄호 '위'에 서고, t) 는 그 '한 칸 앞'에 섭니다. 그래서 괄호까지 지울 때는 df), 괄호를 남길 때는 dt) 입니다.

이동자주 쓰는 조합
0 줄 맨 처음(1열) d0
^ 공백 아닌 첫 글자 c^
$ 줄 끝 d$ = D
w / b 다음 낱말 / 이전 낱말 dw, cw, 2dw
e 낱말 끝 글자 de, ce
f{c} / t{c} 글자 c 로 / c 앞까지 df), ct"
; / , 마지막 f·t 를 다시 / 거꾸로 2;

2단계 — 파일 안에서

  • gg 문서 첫 줄 / G 마지막 줄 / 12G 12번째 줄 (:12 도 같다)
  • { } 빈 줄(문단 경계) 단위로 위·아래 — 코드에서는 함수 사이를 건너뛴다
  • H M L 화면의 처음·가운데·끝 줄
  • Ctrl-d / Ctrl-u 반 화면 아래·위 (이 연습기는 지원하지 않는다)
  • % 짝이 되는 괄호로 — 긴 블록의 끝을 찾을 때

3단계 — 검색으로 이동

가장 빠른 이동은 대개 검색입니다. /함수이름 으로 뛰고 n 으로 다음 결과를 봅니다. 커서 아래 낱말과 같은 것을 찾을 때는 * 한 번이면 됩니다.

연산자와도 붙습니다. d/END 는 END 가 나오는 자리까지 지웁니다. 이 조합은 강력하지만 결과 범위가 눈에 잘 보이지 않아, 익숙해질 때까지는 비주얼 모드로 확인하며 쓰는 편이 안전합니다(이 연습기는 연산자+검색 조합을 지원하지 않습니다).

숫자를 붙인다

거의 모든 이동 앞에 숫자를 붙일 수 있습니다. 3j 는 세 줄 아래, 5w 는 다섯 낱말 뒤, 2f, 는 두 번째 쉼표입니다. 상대 줄번호(:set relativenumber)를 켜면 '몇 줄 아래인가'가 화면에 그대로 보여 3j 같은 이동이 쉬워집니다.

자주 묻는 질문

방향키를 쓰면 안 되나요?

실제 vim 에서는 동작합니다. 다만 손이 홈 포지션을 벗어나는 비용이 반복해서 쌓이므로, 익히는 동안에는 일부러 막는 편이 빠릅니다. 이 연습기가 방향키를 받지 않는 이유입니다.

w 와 W 는 무엇이 다릅니까?

w 는 낱말 문자와 기호를 다른 덩어리로 봅니다. foo.bar 에서 w 는 세 번 걸립니다. W 는 공백만 경계로 보므로 foo.bar 를 한 번에 지납니다.