리눅스 vi/vim 명령어 총정리: 초보자도 바로 쓰는 핵심 사용법 완벽 가이드
리눅스(Linux) 환경에서 개발이나 서버 관리를 하다 보면 vi 또는 vim 에디터를 사용해야 하는 상황이 정말 많죠? 😅 터미널 환경에서 가장 강력하고 널리 사용되는 텍스트 편집기이지만, 처음 접하면 일반적인 GUI 에디터와는 사용법이 너무 달라서 당황하기 쉽거든요. 모드 개념 때문에 '이게 맞나?' 싶을 때도 있고요.
혹시 지금도 명령어 하나하나 검색하며 편집하고 계신가요? 이 글만 끝까지 읽으시면 vi/vim의 가장 핵심적인 명령어와 사용 원리를 완벽하게 정리하실 수 있을 거예요. 파일 열기부터 내용 수정, 저장, 원하는 내용 검색 및 바꾸기까지, 효율적인 사용을 위한 모든 것을 알려드릴게요! 😊
vi/vim 에디터, 이것만 알면 시작! 세 가지 모드 이해하기 🤔
vi/vim이 다른 에디터와 가장 크게 다른 점은 바로 '모드(Mode)' 개념이 있다는 거예요. 이 모드 전환만 익숙해지면 vi/vim 사용은 90% 끝났다고 보셔도 돼요!
vi/vim은 크게 세 가지 모드로 작동해요. 각 모드의 역할을 정확히 이해하는 것이 중요합니다.
여기에는 독자가 반드시 알아야 할 중요한 정보나 팁을 작성합니다.
- 명령 모드 (Command Mode): 가장 기본 모드예요. 파일 열기 직후 상태이며, 키 입력은 텍스트가 아닌 '명령'으로 인식됩니다. 커서 이동, 복사, 붙여넣기, 삭제 등을 수행합니다.
- 입력 모드 (Insert Mode): 실제 텍스트를 입력하거나 수정할 수 있는 모드입니다. 일반적인 텍스트 에디터와 같죠. 명령 모드에서 'i', 'a', 'o' 등을 눌러 진입합니다.
- 마지막 행 모드 (Last Line/Ex Mode): 파일 저장, 종료, 검색, 문자열 치환 등 특수 명령을 수행하는 모드예요. 명령 모드에서 콜론(:)을 입력하여 진입합니다.
필수 vi/vim 명령어 총정리: 모드별 핵심 기능 📊
자, 그럼 이제 각 모드에서 자주 쓰이는 핵심 명령어들을 표로 깔끔하게 정리해 드릴게요. 이것만 외우시면 작업 속도가 훨씬 빨라질 거예요! 특히 리눅스 서버에서 설정 파일을 수정할 때 유용하거든요.
명령 모드 (Command Mode) 핵심 이동 및 편집
| 구분 | 명령어 | 설명 | 비고 |
|---|---|---|---|
| 커서 이동 | h, j, k, l | 각각 좌, 하, 상, 우 이동 | 화살표 키 대신 사용 |
| 줄 이동 | G / gg / 숫자G | 맨 끝 / 맨 위 / 지정된 줄로 이동 | 매우 유용해요! |
| 삭제 | dd / dw / x | 한 줄 삭제(잘라내기) / 한 단어 삭제 / 한 글자 삭제 | 'd'는 delete |
| 복사/붙여넣기 | yy / p | 한 줄 복사 / 커서 다음에 붙여넣기 | 'y'는 yank, 'p'는 paste |
| 실행 취소/반복 | u / Ctrl + r | 실행 취소 (Undo) / 다시 실행 (Redo) | 실수했을 때 필수! |
특히 `dd` (한 줄 삭제)와 `p` (붙여넣기)는 서버 설정 파일을 수정할 때 정말 자주 쓰이니 꼭 기억하세요! `dd`는 사실 잘라내기에 더 가깝습니다.
입력 모드 (Insert Mode) 진입 명령어
| 구분 | 명령어 | 설명 | 비고 |
|---|---|---|---|
| 현재 위치 | i (Insert) | 커서가 있는 위치에서 입력 시작 | 가장 일반적인 방법 |
| 커서 뒤 | a (Append) | 커서 다음 칸부터 입력 시작 | 뒤에 내용을 추가할 때 |
| 새 줄 (아래) | o (Open) | 커서가 있는 줄 아래에 새 줄 추가 후 입력 | 새 문단을 시작할 때 편리 |
| 새 줄 (위) | O (대문자 O) | 커서가 있는 줄 위에 새 줄 추가 후 입력 | 주석 등을 추가할 때 |
입력 모드에서 명령 모드로 돌아가려면 반드시 ESC 키를 눌러야 합니다. ESC를 누르지 않고 다른 명령을 입력하려고 하면 예상치 못한 텍스트가 입력될 수 있어요! 특히 콜론(:)을 누르기 전에는 꼭 ESC를 누르는 습관을 들이세요.
마지막 행 모드 (Ex Mode): 저장, 종료, 검색 🧮
명령 모드에서 콜론(:)을 입력하면 화면 맨 아래쪽에 명령 입력창이 나타나죠. 이것이 바로 마지막 행 모드입니다. 여기서는 파일 작업의 핵심인 저장, 종료, 그리고 복잡한 검색 및 치환을 수행해요. 이 모드의 명령어들은 앞에 모두 콜론(:)이 붙는다는 걸 잊지 마세요!
📝 저장 및 종료 공식
:w (저장) + :q (종료) = :wq (저장 후 종료)
이 공식과 함께 아래 명령들을 활용하시면 돼요. 저장하지 않고 강제로 종료해야 하는 비상 상황도 있거든요:
1) **저장**: `:w` (파일 내용 저장)
2) **종료**: `:q` (저장된 경우 종료)
3) **강제 종료**: `:q!` (저장하지 않고 강제로 종료. 수정한 내용이 모두 사라집니다!)
→ **가장 많이 쓰는 조합**: `:wq` 또는 `:x` (저장 후 종료)
이제 마지막 행 모드의 또 다른 강력한 기능, 검색(Search)과 치환(Replace)에 대해 알아볼게요. 대규모 파일을 편집할 때 정말 시간을 절약해 주는 명령어들이에요.
🔢 검색 및 치환 명령어
- 검색: `/찾을문자열` (현재 커서 위치부터 아래로 검색)
- **검색 반복**: `n` (다음 일치 항목으로 이동), `N` (이전 일치 항목으로 이동)
- **라인 번호 표시**: `:set nu` (파일 왼쪽에 라인 번호 표시)
- **문자열 전체 치환**: `:%s/기존문자열/바꿀문자열/g` (파일 전체에서 '기존문자열'을 '바꿀문자열'로 모두 치환)
* 치환 명령어 끝에 `g`를 붙여야 해당 줄의 모든 일치 항목이 치환됩니다. `c`를 추가하면 치환할 때마다 확인(Confirm)합니다.
실전 예시: 40대 직장인 박모모 씨의 설정 파일 수정 📚
실제로 어떻게 이 명령어들을 활용하는지 구체적인 사례를 통해 살펴볼게요. 40대 직장인 박모모 씨가 웹 서버 설정을 변경하는 상황을 가정해 봅시다. 독자님들도 이 과정을 따라 해 보시면 훨씬 쉽게 이해되실 거예요.
사례 주인공의 상황
- 정보 1: 웹 서버 설정 파일 `httpd.conf`를 vi로 열었습니다.
- 정보 2: 보안 강화를 위해 특정 주석(#) 처리된 라인을 해제하고, 서버 포트 번호 80을 8080으로 변경해야 합니다.
계산 과정 (명령어 사용 과정)
1) **파일 열기**: 터미널에 `vi httpd.conf` 입력 (명령 모드로 시작)
2) **검색**: `/Port 80` 입력 후 엔터. 커서가 해당 라인으로 이동합니다.
3) **치환 (Port 번호 변경)**: 명령 모드에서 `:s/80/8080/g` 입력 (현재 줄에서 80을 8080으로 변경)
4) **주석 해제**: 원하는 주석 라인으로 이동 후, 커서가 `#`에 있을 때 `x`를 눌러 `#`을 삭제 (명령 모드)
5) **저장 후 종료**: `:wq` 입력
최종 결과
- 결과 항목 1: vi/vim 사용이 능숙해져서 설정 파일 수정 시간을 대폭 절약했습니다.
- 결과 항목 2: Port 번호 변경 및 주석 해제가 성공적으로 완료되어 새로운 서버 설정이 적용되었습니다.
어때요, 명령어들이 실제 상황에서 어떻게 유기적으로 연결되는지 보니 조금 더 감이 오시죠? 복잡하게 생각하지 마시고, 'ESC'로 명령 모드에 진입하는 것을 기본으로 삼으면 됩니다!
마무리: 핵심 내용 요약 📝
지금까지 vi/vim 에디터의 핵심 사용법을 모드별로 자세히 알아봤어요. 가장 중요한 내용을 다시 한번 요약해 드릴게요!
- 세 가지 모드 이해가 핵심. 명령 모드(Command), 입력 모드(Insert), 마지막 행 모드(Ex)의 역할을 확실히 구분해야 합니다.
- ESC 키가 생명선. 항상 입력 모드를 마치고 명령 모드로 돌아갈 때 ESC 키를 누르는 습관을 들이세요.
- 이동/삭제는 명령 모드. 줄 이동(G, gg), 줄 삭제(dd), 복사(yy)는 모두 명령 모드에서 이루어집니다.
- 저장 및 종료는 콜론(:). 파일을 저장(:w)하거나 저장 후 종료(:wq)하는 명령어는 콜론(:)으로 시작하는 마지막 행 모드 명령입니다.
- 치환은 강력한 무기. 전체 치환 명령어인 `:%s/기존/바꿀/g`를 활용하면 대량 작업이 순식간에 끝납니다.
vi/vim은 익숙해지기만 하면 마우스가 필요 없는 최고의 텍스트 편집기가 될 거예요. 오늘 배운 핵심 명령어들을 꼭 직접 사용해 보시길 바랍니다! 궁금한 점이나 여러분만의 vi 꿀팁이 있다면 댓글로 물어봐주세요~ 😊


