리눅스 서버에서 설정 파일을 수정하려고 vi를 켰다가, 어떻게 빠져나오는지 몰라 당황했던 경험 한 번쯤은 있으시죠? vim(Vi IMproved)은 일반적인 에디터와 달리 '모드(Mode)' 기반으로 동작하기 때문에 초기 진입 장벽이 높습니다.
하지만 전 세계 엔지니어들이 vim을 고집하는 이유가 있습니다. 손가락의 동선을 최소화하여 압도적인 편집 속도를 제공하기 때문입니다. 오늘 이 포스팅을 통해 vi의 공포에서 벗어나 진정한 리눅스 유저로 거듭나시길 바랍니다.
1. 반드시 알아야 할 3가지 핵심 모드
vim의 핵심은 현재 내가 어떤 '모드'에 있는지를 파악하는 것입니다. 각 모드 간의 전환은 Esc 키를 기점으로 이루어집니다.
- 명령 모드 (Command Mode): 커서 이동, 삭제, 복사, 붙여넣기 등을 수행합니다. (기본 모드)
- 입력 모드 (Insert Mode): 실제 내용을 작성합니다. 명령 모드에서
i또는a를 눌러 진입합니다. - 명령행 모드 (Last Line Mode): 저장, 종료, 검색 등을 수행합니다. 명령 모드에서
:를 눌러 진입합니다.
실무에서 가장 많이 쓰는 vim 명령어 모음
| 구분 | 명령어 | 기능 및 효과 |
|---|---|---|
| 입력 시작 | i | 현재 커서 앞(insert)에서부터 입력 시작 |
| a | 현재 커서 뒤(append)에서부터 입력 시작 | |
| 저장 및 종료 | :w | 내용을 저장(write)만 함 |
| :wq! | 저장 후 강제로 종료 (권한 문제 시 사용) | |
| :q! | 수정 사항을 저장하지 않고 무시하며 종료 | |
| 편집 기술 | dd | 현재 줄을 삭제 (또는 잘라내기) |
| yy / p | 한 줄 복사(yank) / 아래에 붙여넣기(paste) |
2. 작업 속도를 높여주는 고급 이동 기술
화살표 키로 한 칸씩 이동하는 것은 vim답지 않습니다. 다음 단축키를 기억하세요.
- G : 파일의 가장 마지막 줄로 이동
- gg : 파일의 가장 첫 번째 줄로 이동
- /[단어] : 특정 단어를 아래 방향으로 검색 (n키를 눌러 다음 단어로 이동)
- u : 방금 한 작업을 취소(Undo)
- Ctrl + r : 취소한 작업을 다시 실행(Redo)
3. 실수 예방을 위한 팁
초보자가 가장 많이 하는 실수는 비정상 종료입니다. .swp 파일이 생성되었다는 경고가 뜨면 당황하지 마세요. 작업 중이던 내용을 복구하거나, 필요 없다면 해당 숨김 파일을 삭제하면 해결됩니다.
$ rm .filename.swp # 비정상 종료 시 생성된 스왑 파일 삭제
마치며: vim은 익숙해지는 것입니다
vim은 머리로 외우는 게 아니라 손가락이 기억하게 만드는 도구입니다. 오늘 소개한 명령어 중 i, :wq, dd, u 4가지만 확실히 익혀도 웬만한 서버 설정 작업은 문제없이 수행할 수 있습니다.
💡 실천 과제: 지금 리눅스 터미널에서 vim test.txt를 입력해 파일을 만들고, 내용을 입력한 뒤 :wq로 저장하고 나오는 과정을 3번만 반복해 보세요. 금방 익숙해질 것입니다!