동작하는 코드
아래 에디터에서 x, dd, yy, p, u, . 명령을 연습해보세요. Normal 모드 상태에서 키를 눌러 바로 편집할 수 있습니다.
실제 터미널에서는 이렇게 파일을 만들고 엽니다:
cat << 'EOF' > todo.txt
# 오늘 할 일
- 이메일 확인
- 코드 리뷰
- 버그 수정
- 테스트 작성
- 배포 준비
- 회의 참석
EOF
vim todo.txt
삭제해보기
Normal 모드에서 삭제 명령을 써볼게요:
| 키 | 동작 | 기억법 |
|---|---|---|
x | 커서 위의 글자 하나 삭제 | 지우개로 X표 |
dd | 줄 전체 삭제 | delete 두 번 |
D | 커서부터 줄 끝까지 삭제 | Delete to end |
"회의 참석" 줄에 커서를 놓고 dd를 눌러보세요. 줄 전체가 사라집니다!
"이메일 확인" 줄에서 D를 눌러보면, 커서 위치부터 줄 끝까지만 사라져요.
실행 취소
실수했어요? 걱정 마세요:
| 키 | 동작 |
|---|---|
u | 실행 취소 (undo) |
Ctrl+r | 다시 실행 (redo) |
방금 삭제한 것을 되돌리려면 u를 누르세요. 여러 번 누르면 계속 이전 상태로 돌아갑니다. 너무 많이 되돌렸으면 Ctrl+r로 앞으로 갈 수 있어요.
Vim의 실행 취소는 무제한이에요. 파일을 열고 나서 한 모든 작업을 되돌릴 수 있습니다.
직접 수정하기
복사와 붙여넣기
Vim에서는 복사를 yank라고 불러요:
| 키 | 동작 | 기억법 |
|---|---|---|
yy | 줄 전체 복사 | yank |
p | 아래에 붙여넣기 | put after |
P | 위에 붙여넣기 | Put before |
"코드 리뷰" 줄에 커서를 놓고 이렇게 해보세요:
yy → "코드 리뷰" 줄 복사
p → 아래에 붙여넣기
결과:
- 코드 리뷰
- 코드 리뷰 ← 복사된 줄!
- 버그 수정
dd로 삭제한 줄도 사실 "잘라내기"입니다. dd 후에 다른 곳에서 p를 누르면 거기에 붙여넣을 수 있어요. 줄 순서를 바꿀 때 편하죠:
dd → "버그 수정" 줄 잘라내기
k → 위로 이동
p → 여기에 붙여넣기
점(.) 명령 — "한 번 더!"
.은 마지막으로 한 편집을 반복합니다:
dd → "테스트 작성" 줄 삭제
. → 다음 줄도 삭제 (dd 반복)
. → 또 다음 줄도 삭제
완료된 TODO 항목을 연달아 지울 때, dd 한 번 + . 여러 번이면 끝이에요.
실제로 설정 파일을 정리할 때도 유용합니다:
# nginx.conf 에서 주석 줄 정리하기
server {
# 이건 필요없는 주석
listen 80;
# 이것도 삭제할 주석
server_name example.com;
# 이것도
root /var/www/html;
}
첫 번째 주석 줄에서 dd, 다음 주석 줄로 이동해서 ., 또 이동해서 . — 빠르죠?
"왜?" — 삭제가 곧 잘라내기인 이유
Vim에는 "잘라내기" 명령이 따로 없어요. dd가 삭제이면서 동시에 잘라내기입니다. 삭제한 텍스트는 **레지스터(register)**라는 임시 저장소에 들어가요.
이게 왜 좋냐면:
1. dd로 줄을 삭제 (= 레지스터에 저장됨)
2. 원하는 위치로 이동
3. p로 붙여넣기
"삭제 후 다른 곳에 넣기"가 자연스럽게 되는 거예요. 일반 에디터에서 잘라내기 → 붙여넣기를 하는 것보다 더 직관적입니다.
삭제 명령 모음
자주 쓰는 삭제 명령을 정리하면:
| 키 | 동작 |
|---|---|
x | 커서 위 글자 하나 |
X | 커서 앞 글자 하나 (Backspace처럼) |
dd | 줄 전체 |
D | 커서부터 줄 끝까지 |
3dd | 3줄 삭제 |
dw | 다음 단어까지 삭제 |
d$ | 줄 끝까지 삭제 (= D) |
d0 | 줄 처음까지 삭제 |
d + 이동 명령 조합은 다음 레슨에서 더 자세히 배울 거예요.
숫자 접두사로 반복
삭제와 복사에도 숫자를 붙일 수 있어요:
3dd → 3줄 삭제
5yy → 5줄 복사
3x → 글자 3개 삭제
TODO 리스트에서 완료된 항목 5개를 한 번에 지울 때 5dd면 끝!
심화 학습
vim todo.txt로 파일을 여세요.- 아무 줄에서
dd로 줄을 삭제해보세요. u로 되돌린 뒤,Ctrl+r로 다시 실행해보세요.- "이메일 확인" 줄을
yy로 복사하고, 파일 맨 끝으로 이동해서p로 붙여넣어보세요. - "배포 준비" 줄을
dd로 잘라내고, "코드 리뷰" 아래로 이동해서p로 붙여넣어 순서를 바꿔보세요. dd를 한 번 누른 뒤,.으로 연달아 줄을 삭제해보세요.u를 여러 번 눌러 모든 변경을 되돌리고,:q!로 나가보세요.
퀴즈
현재 줄 전체를 삭제하는 명령은?
실행 취소(u)를 너무 많이 했을 때, 다시 앞으로 가려면?
.(점) 명령의 역할은?