본문 바로가기
C.W.K.
Stream
Lesson 06 of 08 · published

기본 이동

~14 min · vim, motion, navigation

Level 0갇힌 자
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

왜 화살표 키 대신 h j k l 인가

화살표 키는 키보드 구석에 있어. 오른손이 홈 row를 떠나서, 더듬어 찾고, 누르고, 다시 돌아와야 해. h j k l이미 오른손 밑에 깔려 있고. 첫날엔 어색한데, 사흘째가 되면 화살표 키가 돌아가는 길처럼 느껴져.

이 배치는 1976년 ADM-3A 터미널에서 왔어. vi를 만들던 시절 그 키보드에는 h j k l 자리에 화살표가 같이 새겨져 있었거든. 관습이 살아남은 건 역사가 유서 깊어서가 아니라 손에 더 잘 맞아서야.

글자 단위 이동

h, j, k, l이 왼쪽, 아래, 위, 오른쪽이야. j가 아래인 건 글자 꼬리가 아래로 내려가서고, k가 위인 건 획이 위로 솟아서야. 이 퀘스트는 이런 식의 연상법으로 가득해.

단어 단위 이동 — 첫 번째 속도 도약

글자 단위로 콩콩 뛰는 건 미세한 편집엔 좋지만, 평소엔 단어 단위로 건너뛰고 싶어져. w는 다음 단어의 시작, e는 지금(또는 다음) 단어의 끝, b는 앞 단어의 시작이야.

소문자는 punctuation에서도 멈춰. hello-world를 세 단어로 본다는 뜻이야. 대문자 (W E B) 는 whitespace에서만 멈추니까 같은 문자열이 통째로 한 WORD가 되고. 둘 다 자주 쓰게 돼.

줄 단위 이동

0은 줄 맨 앞, ^은 공백이 아닌 첫 글자 (보통 이쪽을 원해), $는 줄 끝이야. 키보드 숫자 줄을 떠올려 봐. 0은 제일 왼쪽에 있고 $는 오른쪽 4 위에 얹혀 있잖아. 이것도 눈으로 외우는 연상법이야.

파일 단위 이동

gg는 첫 줄, G는 마지막 줄이야. :42면 42번째 줄로 가고 (42G도 같아). Ctrl-dCtrl-u는 반 페이지씩 아래위로, Ctrl-fCtrl-b는 한 페이지씩 움직여.

count를 붙여 써. 거의 모든 motion이 앞에 숫자를 받아. 5j면 다섯 줄 아래, 3w면 세 단어 앞, 10l이면 열 글자 오른쪽이야. 트랙 4의 set relativenumber랑 같이 쓰면 gutter에 적힌 숫자를 그대로 읽어서 원하는 자리로 정확히 뛸 수 있어.

Code

글자 이동 — h j k l·vim
h    " 왼쪽
j    " 아래
k    " 위
l    " 오른쪽
단어 이동·vim
w    " 다음 단어 시작
e    " 다음 단어 끝
b    " 이전 단어 시작
ge   " 이전 단어 끝
W    " 다음 WORD 시작 (whitespace 단위)
E    " 다음 WORD 끝
B    " 이전 WORD 시작
줄 이동·vim
0    " 첫 컬럼
^    " 첫 non-blank 캐릭터
$    " 라인 끝
g_   " 마지막 non-blank 캐릭터
|    " 첫 컬럼 (0 의 동의어)
5|   " 5 번 컬럼
파일 / 화면 이동·vim
gg       " 첫 라인
G        " 마지막 라인
:42      " 42 라인 (Command-line)
42G      " 42 라인 (Normal-mode 단축)
H        " 화면 맨 위 라인 ("High")
M        " 화면 중간 ("Middle")
L        " 화면 맨 아래 ("Low")
Ctrl-d   " 반 페이지 아래
Ctrl-u   " 반 페이지 위
Ctrl-f   " 한 페이지 앞
Ctrl-b   " 한 페이지 뒤
zz       " 커서를 화면 가운데로
zt       " 커서를 화면 위로
zb       " 커서를 화면 아래로

External links

Exercise

200줄 넘는 소스 파일을 열어. Normal mode의 motion만 써서, 화살표도 마우스도 :도 쓰지 말고 도달해봐. (1) 50번째 줄, (2) 파일 한가운데, (3) 마지막 줄의 마지막 단어, (4) 처음 나오는 여는 괄호의 짝. 시간을 재보고 싶으면 재도 좋아. 15초 안에 되면 손에 붙은 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.