리눅스에서 환경 변수를 수정(vi ~/.bashrc)하거나 서버 설정 파일(sudo vi /etc/nginx/nginx.conf)을 바꿀 때, 키보드로만 파일을 편집해야 하는 상황이 빈번합니다.
이때 가장 대중적으로 쓰이는 텍스트 에디터, Vim(Vi) 사용법과 필수 단축키들을 정리해 둡니다.
리눅스 에디터의 끝판왕: Vim (Vi)
Vim은 리눅스 배포판에 기본적으로 100% 내장되어 있어 가장 범용성이 높지만, '모드(Mode) 기반 아키텍처'라는 특이한 구조 때문에 처음 접하면 글자 입력도, 종료도 못 하는 대참사가 일어납니다. 이것 딱 3가지 모드만 기억하세요.
- 명령 모드 (Command Mode): 처음 파일을 열었을 때의 기본 상태입니다. 글자가 입력되지 않고, 키보드 자판이 모두 '복사, 삭제, 이동' 같은 명령어로 작동합니다. (다른 모드에서 Esc를 누르면 언제든 이 모드로 복귀합니다.)
- 입력 모드 (Insert Mode): 실제 코드를 타이핑하는 모드입니다. 명령 모드에서 i를 누르면 진입합니다.
- ex 모드 / 라인 명령 모드: 저장, 종료, 검색 등을 수행하는 모드입니다. 명령 모드에서 :(콜론)을 누르면 화면 맨 아래 입력창이 뜹니다.
Vim 실무 핵심 단축키 모음 (명령 모드 기준)
| 명령어 (키보드) | 기능 설명 | 비고 |
| i | 현재 커서 위치부터 입력 모드로 전환 | 타이핑 시작할 때 |
| Esc | 현재 모드를 취소하고 명령 모드로 복귀 | 필수 브레이크 |
| dd | 현재 커서가 있는 한 줄 잘라내기(삭제) | 가장 자주 씀 |
| 3dd | 현재 커서 포함 아래로 3줄 삭제 | 숫자 조합 가능 |
| yy | 현재 커서가 있는 한 줄 복사 | Yank |
| p | 복사하거나 잘라낸 내용을 커서 아래에 붙여넣기 | Paste |
| u | 직전 작업 실행 취소 (Ctrl + Z 역할) | Undo |
| Ctrl + r | 실행 취소한 것을 다시 실행 (Ctrl + Y 역할) | Redo |
| G | 파일의 최하단(맨 끝 줄)으로 이동 | 대문자 필수 |
| gg | 파일의 최상단(맨 첫 줄)으로 이동 | 소문자 연속 두 번 |
ex 모드 (저장 및 탈출 명령어)
명령 모드에서 :를 입력한 뒤 아래 명령어를 치고 Enter를 누릅니다.
- :wq: 변경 사항을 저장하고 종료 (Write & Quit - 실무 90% 사용)
- :q: 변경 사항이 없을 때 그냥 종료 (Quit)
- :q!: 수정한 내용이 있지만 저장하지 않고 강제 무시 종료 (수정하다 꼬였을 때 심폐소생술)
- /%s/기존문자/바꿀문자/g: 파일 전체에서 특정 문자열을 찾아 일괄 치환 (예: :s/localhost/127.0.0.1/g)
이런 상황엔 Vim(Vi)을 쓰세요
- 인프라 백엔드 배포 가동 중 아키텍처 설정 파일을 급하게 한두 줄만 고치고 바로 나와야 할 때
- 수만 줄 짜리 대용량 로그 파일에서 특정 키워드를 검색(/...)하거나, 파일 맨 끝(G)으로 초고속 점프해야 할 때
- Docker 컨테이너나 어떤 리눅스 임베디드 서버에 들어가도 에러 없이 작동하는 100% 가용성이 필요할 때
리눅스에서 처음 제어할 때 가장 장벽이 높은 것이 마우스 없는 텍스트 편집입니다. 처음에는 Esc와 i, :wq를 누르는 타이밍이 헷갈려 답답할 수 있지만, 적응하면 마우스로 손을 옮기지 않아도 되는 Vim의 속도감에 매료될 것입니다.
위 단축키 레이아웃을 치트시트처럼 터미널 옆에 띄워두고 실무에 적용해 보시기 바랍니다.
'Setting Log > Linux' 카테고리의 다른 글
| [Linux] 실시간 리소스 및 디스크 사용량 확인 명령어 4가지 (0) | 2026.07.17 |
|---|---|
| [Setting Log] 리눅스 파일 압축 및 해제 명령어 완벽 정리 (tar, tar.gz, zip) (0) | 2026.06.22 |
| [Nginx] 포워드 프록시 vs 리버스 프록시 개념 및 차이점 정리 (0) | 2026.06.08 |
| [Linux] 리눅스 scp: 로컬 전송부터 원격 서버 간 전송까지 (0) | 2026.06.05 |
| [AI Tools] 클로드 코드(Claude Code) 리눅스 환경 설치 및 가이드 (0) | 2026.06.04 |