C.W.K.
Stream
Lesson 01 of 06 · published

문법 — operator + motion

~13 min · vim, grammar, composability

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

Vim 은 키 리스트가 아니라 언어야

Vim 이 천 개 명령을 가진 것 같은 이유는 작은 operator 세트와 작은 motion 세트를 합쳐서 수백 개 동사를 공짜로 만들 수 있어서야. delete-to-next-word 를 외우는 게 아니라, d (삭제) 와 w (다음 단어) 를 외우면 dw 조합이 자동으로 따라와.

공식

[count] {operator} [count] {motion}

Count 는 옵션. 두 count 가 곱해져 (3d2w 가 6 단어 삭제 = d6w = 6dw). Operator 는 뭐를; motion 은 얼마나. 그게 문법 전체야.

가장 자주 쓸 다섯 operator

  • d — delete (yank 도 함).
  • c — change (delete + Insert mode 진입).
  • y — yank (제거 안 하고 copy).
  • > — 오른쪽 indent.
  • < — 왼쪽 indent.

그리고 첫날부터 알아두면 좋은 두 번째 티어: = (auto-format), gu / gU (case fold), g~ (case 토글), gq (텍스트 reflow).

두 번 누르기 = 라인 단위로 적용

Vim 에 아름다운 단축이 있어: operator 를 두 번 누르면 현재 라인 전체에 적용돼. dd 는 라인 삭제, yy 는 yank, cc 는 change, >> 는 indent. 두 번 누른 키가 operator + 라인 의 단축이야.

합성성이 핵심. dw, de, db, d$, d^, dG 를 외우는 건 지쳐. d 와 motion 리스트를 외우면 두 lookup 이 공짜로 합쳐져. Vim 이 무한해 보이는 건 실제로 무한해서야 — motion 인 건 다 delete 타깃이기도 해.

대문자와 shifted 형태

많은 operator 가 "라인 끝까지" 의미하는 대문자 변형을 가져: D = d$, C = c$, Y 는 역사적으로 = yy (라인 단위 yank). 예외는 Y — 현대 Neovim 은 일관성을 위해 기본을 Y = y$ 로 박았는데, 클래식 Vim 은 여전히 Y = yy. 머신 사이를 오갈 거면 알아둬.

Code

operator + motion = 동사·vim
dw      " 다음 단어 까지 삭제
d3w     " 다음 3 단어 삭제
d$      " 라인 끝까지 삭제
d0      " 라인 시작까지 삭제
dG      " 여기부터 파일 끝까지 삭제
cw      " 다음 단어까지 change (delete + insert)
c$      " 라인 끝까지 change (C 와 동일)
yiw     " inner word yank (text-object 미리보기)
>>      " 라인 오른쪽 indent
<<      " 라인 왼쪽 indent
=ap     " paragraph 주변 auto-format
두 번 누르기 — 라인 단위 단축·vim
dd     " 현재 라인 삭제
yy     " 현재 라인 yank
cc     " 현재 라인 change
>>     " 현재 라인 indent
<<     " 현재 라인 dedent
==     " 현재 라인 auto-indent
guu    " 현재 라인 lowercase
gUU    " 현재 라인 uppercase
Count 가 문법과 합쳐져·vim
5dd     " 5 라인 삭제
3>>     " 3 라인 indent
10x     " 10 캐릭터 삭제
d3w     " 3 단어 삭제 (3dw 와 동일)
2d3w    " 6 단어 삭제 (count 가 곱해짐)

External links

Exercise

소스 파일 열어. 키 누르기 전에 결과 예측: (1) d3w, (2) c$, (3) 5dd, (4) guu, (5) =ap. 누르기 전 한 문장으로 효과를 묘사할 수 있으면 문법이 박힌 거야.

Progress

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

댓글 0

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

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