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

기본 편집 명령

~12 min · vim, editing, yank-paste

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

Vim의 편집 동사들

글자 세 개가 편집의 대부분을 해내. d는 delete, y는 yank (복사), c는 change야. 얘네가 트랙 2의 motion, text object와 붙으면서 작은 언어가 돼. 오늘은 혼자 쓰는 형태만 외우자.

삭제

Vim에선 삭제랑 잘라내기가 같은 동작이야. 지운 텍스트가 unnamed register에 들어가서 바로 붙여넣을 수 있거든. "cut" 키가 따로 없는 건 있어봤자 겹치기 때문이야.

Yank와 paste

y는 복사만 하고 원본은 안 건드려. p는 커서 뒤에, P는 커서 앞에 붙여넣어. yy처럼 줄 단위로 복사한 건 새 줄로 들어가고, 글자 단위로 복사한 건 줄 중간에 끼어들어. 어떻게 복사했는지를 보고 Vim이 알아서 판단해.

Change와 delete의 차이

c는 지우면서 Insert mode로 떨어뜨려. 바로 새 텍스트를 칠 수 있는 상태가 되는 거야. cw는 단어를, cc는 줄 전체를, C는 커서부터 줄 끝까지 바꿔. "이거 지우고 새로 쳐야지" 싶은 순간엔 delete 말고 change를 잡아.

Undo와 redo

u는 변경 하나를 되돌리고 Ctrl-r은 그 되돌리기를 다시 취소해. Vim의 undo 트리는 buffer마다 따로 있고 저장한 뒤에도 남아 있어. 트랙 4의 set undofile까지 켜면 Vim을 껐다 켜도 살아남고. U는 지금 줄에 가한 모든 변경을 한 번에 되돌려 — "이 줄은 안 건드린 걸로 하자" 싶을 때 좋아.

동사는 합쳐 쓰라고 있는 거야. d + wdw (단어 삭제). y + $y$ (줄 끝까지 복사). c + i"ci" (따옴표 안쪽 바꾸기). 트랙 2는 이 원칙 하나를 끝까지 밀어붙이면 무슨 일이 벌어지는지 보여주는 트랙이야.

매 분마다 쓰는 작은 동사들

x는 커서 위 글자를 지워 (dl의 한 글자짜리 버전이야). r은 글자 하나만 갈아끼워 — r 누르고 새 글자를 치면 돼. ~는 대소문자를 뒤집고, J는 지금 줄에 다음 줄을 붙이면서 사이에 공백 하나를 알아서 끼워줘.

Code

삭제 명령·vim
x      " 커서 위 캐릭터 삭제
X      " 커서 앞 캐릭터 삭제 (backspace 같음)
dd     " 라인 전체 삭제
D      " 커서부터 라인 끝까지 삭제
dw     " 다음 단어 시작까지 삭제
d$     " 라인 끝까지 (D 와 동일)
d0     " 라인 시작까지 삭제
dG     " 현재 라인부터 파일 끝까지 삭제
dgg    " 현재 라인부터 파일 시작까지 삭제
Yank와 paste·vim
yy     " 라인 전체 yank
Y      " 라인 전체 yank (yy 와 동일)
yw     " 다음 단어 시작까지 yank
y$     " 라인 끝까지 yank
yiw    " inner word yank (트랙 2 미리보기)
p      " 커서 뒤 / 라인 아래 paste
P      " 커서 앞 / 라인 위 paste
"+y   " 시스템 클립보드 register 로 yank
"+p   " 시스템 클립보드에서 paste
Change — 삭제 + Insert mode·vim
cw      " 단어 change
cc      " 라인 전체 change
C       " 커서부터 라인 끝까지 change
ciw     " inner word change
ci"    " 더블 quote 안 change
ci(     " 괄호 안 change
Undo와 그 친구들·vim
u       " 한 변경 undo
Ctrl-r  " redo
U       " 현재 라인의 모든 변경 undo (토글)
:undolist  " undo 트리 보기 (고급)
g-      " undo 트리에서 시간상 더 이전
g+      " undo 트리에서 시간상 더 이후

External links

Exercise

아무 코드 파일이나 열고, Insert mode는 한 번도 쓰지 말고 해봐. (1) dd로 함수 본문을 한 줄씩 지우기, (2) yyp로 줄 복제하기, (3) dd 한 번과 p 한 번으로 붙어 있는 두 줄 자리 바꾸기, (4) J를 두 번 눌러 세 줄을 한 줄로 합치기. Insert mode를 봉인하는 규칙이 동사+motion 언어를 몸으로 느끼게 만들어줘.

Progress

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

댓글 0

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

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