리눅스 초보자를 위한 필수 가이드: vim/vi 에디터 핵심 명령어 총정리
리눅스 서버 작업을 하다 보면 GUI 환경 없이 **터미널(Terminal)**에서 텍스트 파일을 수정해야 하는 경우가 정말 많잖아요? 특히, 시스템 설정 파일이나 스크립트 파일을 다룰 때는 **vi**나 **vim** 에디터가 거의 표준처럼 사용되죠. 처음 접하면 사용법이 조금 복잡하게 느껴질 수도 있지만, 걱정 마세요! 몇 가지 핵심 명령어만 익히면 여러분도 터미널에서 프로처럼 파일을 편집할 수 있답니다. 😊
이 글에서는 vi/vim 에디터의 **3가지 핵심 모드**를 이해하고, 파일 저장 및 종료, 커서 이동, 텍스트 편집(삭제, 복사, 붙여넣기)에 필요한 **가장 중요한 명령어들**을 쉽고 구체적인 예시와 함께 알려드릴 거예요. 이 가이드를 통해 vi/vim 에디터에 대한 막연한 두려움을 없애고, 리눅스 환경에서의 작업 효율을 확 높여보자고요! 파이팅! 💪
vi/vim 에디터의 3가지 핵심 모드 이해하기 🤔
vi/vim 에디터는 일반적인 워드프로세서와 달리 파일을 편집하기 위해 **세 가지 모드**를 전환하며 사용해요. 이 모드 개념만 정확히 이해하면 vi/vim 사용의 절반은 마스터한 거나 다름없답니다.
가장 먼저 기억해야 할 것은, vi/vim을 실행했을 때 처음 진입하는 모드가 바로 **명령 모드**라는 거예요. 텍스트를 입력하고 싶다면 반드시 **입력 모드**로 전환해야 합니다. 전문 용어는 아니지만, 쉽게 풀어 설명하면 이렇습니다.
여기에는 독자가 반드시 알아야 할 중요한 정보나 팁을 작성합니다. * **명령 모드 (Command Mode/Normal Mode):** 파일 열기 시 최초 진입 모드예요. 커서 이동, 삭제, 복사, 붙여넣기 등 **편집 명령**을 내릴 때 사용해요. * **입력 모드 (Insert Mode):** **i, a, o** 등의 키를 눌러 진입하며, **텍스트를 실제로 입력**할 수 있는 모드입니다. * **콜론 모드 (Last Line Mode/Ex Mode):** `:` (콜론)을 입력해서 진입하며, 파일 저장, 종료, 검색/치환 등 **시스템 명령어**를 실행할 때 사용해요.
vi/vim의 핵심 명령어 총정리 📊
이제 모드 별로 자주 사용하는 핵심 명령어를 깔끔하게 정리해 드릴게요. 이 명령어들만 숙지해도 웬만한 텍스트 편집 작업은 문제없이 처리할 수 있을 거예요. 이 섹션에서는 주제에 대한 더 구체적인 정보나 데이터를 제공하는 것이 좋습니다.
명령어 모드에서 **입력 모드로 전환하는 방법**이 가장 중요하고 헷갈리기 쉬우니, 이 부분을 특별히 강조하고 싶은 내용은 이렇게 하이라이트로 표시하세요. **Esc** 키를 누르면 언제든지 입력 모드나 콜론 모드에서 **명령 모드**로 돌아올 수 있다는 것을 항상 기억하세요!
**필수 모드 전환 명령어 (명령 모드 → 입력 모드)**
| 구분 | 설명 | 비고 | 기타 정보 |
|---|---|---|---|
| i (insert) | **현재 커서 위치**부터 삽입/입력 | 가장 일반적인 진입 명령어 | I: 행 맨 앞에서부터 입력 |
| a (append) | **현재 커서 바로 다음** 위치에 삽입 | 한 칸 뒤에 입력 시작 | A: 행 맨 뒤에서부터 입력 |
| o (open) | **현재 줄 다음** 위치에 **새 줄** 삽입 | 줄을 추가하며 입력 시작 | O: 현재 줄 이전(윗 줄)에 새 줄 삽입 |
| cc, s, S | 텍스트를 삭제하고 바로 입력 모드로 전환 | c(change) 계열 명령 | cc: 한 행을 지우고 입력, s: 한 글자를 지우고 입력 |
**명령 모드: 커서 이동, 삭제, 복사/붙여넣기**
명령 모드(Normal Mode)에서 사용하는 주요 기능들입니다. 이때는 **Esc** 키를 눌러 입력 모드를 빠져나온 상태여야 해요.
- **기본 이동:** `h` (←), `j` (↓), `k` (↑), `l` (→)를 사용해요. 화살표 키 대신 사용하는 것이 숙련자들의 방식이죠.
- **빠른 이동:** `0` (숫자 0): 행 맨 앞, `$` (Shift+4): 행 맨 뒤, `w`: 다음 단어 시작, `b`: 이전 단어 시작, `G`: 파일 맨 끝, `gg`: 파일 맨 처음. `nG`: n번째 줄로 이동 (예: `10G`는 10번째 줄로 이동).
- **삭제:** `x`: 커서 위치의 **글자 1개** 삭제, `dw`: **한 단어** 삭제, `dd`: 커서가 있는 **한 줄** 삭제. `ndd`는 커서부터 n개의 줄을 삭제해요 (예: `5dd`는 5줄 삭제).
- **복사(Yank) & 붙여넣기(Put):** `yy` 또는 `Y`: 커서가 있는 **한 줄** 복사, `p` (소문자): 현재 커서가 있는 **다음 줄**에 붙여넣기, `P` (대문자): 현재 커서가 있는 **윗 줄**에 붙여넣기. `ndd`는 잘라내기와 같으니, `p`로 붙여넣기가 가능해요.
- **실행 취소/다시 실행:** `u` (undo): 방금 한 명령 취소, `Ctrl + r` (redo): 취소한 명령 다시 실행.
**콜론 모드: 저장, 종료, 검색/치환**
명령 모드에서 `:`(콜론)을 입력하면 화면 맨 아래에 콜론 모드로 진입합니다.
**vi/vim 종료 시** 가장 중요한 명령어는 **`:wq`**와 **`:q!`**입니다. 변경사항이 있는데 그냥 `:q`를 누르면 종료가 안 될 수 있어요. 변경사항을 **저장하고 싶지 않다면** 반드시 **`:q!`**를 사용해서 강제 종료해야 합니다. **저장 후 종료**는 `:wq`, `:x`, 또는 `ZZ`를 사용하면 됩니다.
| 구분 | 설명 | 예시/참고 |
|---|---|---|
| :w | 파일 저장 (Write) | `:w newfile.txt`는 다른 이름으로 저장 |
| :q | 파일 종료 (Quit) | 변경사항 없으면 종료, 있으면 경고 |
| :wq, :x, ZZ | 저장 후 종료 (Write & Quit) | 가장 자주 사용하는 저장 종료 명령어 |
| :q! | 저장하지 않고 강제 종료 | 수정 내용 무시하고 나갈 때 사용 |
| :/문자열, :?문자열 | 문자열 검색 (아래/위 방향) | `n`으로 다음 일치 항목 이동 |
| :%s/old/new/g | 파일 전체에서 'old'를 'new'로 치환 | `g`는 Global (전체) 치환 옵션 |
| :set nu, :set nonu | 행 번호 표시/해제 | 파일 내 위치를 확인할 때 유용 |
세 번째 주요 섹션 제목 🧮 (비교 및 실전 활용)
vi/vim 명령어는 한 번에 여러 작업을 수행하도록 조합해서 사용할 수 있어요. 이 점이 vi/vim을 더욱 강력하게 만드는 비결이랍니다. 예를 들어, 삭제(`d`) 명령어와 이동 명령어를 조합해서 '커서 위치부터 행 끝까지 삭제' 같은 작업을 한 번에 처리할 수 있죠.
**📝 명령어 조합의 원리**
**동작(d, y, c) + 이동 단위(w, $, 0)**
여기에는 계산 예시나 사례를 통한 설명을 작성합니다:
1) **`d$`**: 커서 위치부터 **행 끝까지** 삭제 (End of line)
2) **`d0`** 또는 **`d^`**: 커서 위치부터 **행 시작까지** 삭제 (Start of line)
3) **`5yy`**: 현재 줄부터 **5줄** 복사 (Yank)
→ **팁:** 텍스트를 삭제하거나 복사하면 그 내용이 버퍼(Buffer)에 저장돼요. 그래서 삭제 명령(`d...`) 후에도 **`p`**를 눌러 붙여넣을 수 있는 거랍니다!
**네 번째 주요 섹션 제목 👩💼👨💻 (vim과 vi의 차이점)**
보통 **vi**와 **vim**을 혼용해서 쓰지만, 사실 두 에디터에는 차이가 있어요. **vim**은 **Vi IMproved**의 약자로, 기존 vi 에디터에 **다양한 기능이 추가된 개선 버전**이라고 생각하시면 편합니다. 특히, vim은 구문 강조(Syntax Highlighting) 기능 등 사용자의 편의성을 높인 기능들을 제공합니다. 리눅스 배포판에서는 일반적으로 **vim**을 기본 에디터로 사용하는 경우가 많지만, vi 명령어는 vim에서도 대부분 동일하게 작동하니 걱정 마세요! 특별히 강조하고 싶은 내용은 이렇게 하이라이트로 표시하세요. 이 섹션에서는 주제에 대한 심화 내용이나 특별한 경우를 다루는 것이 좋습니다.
**vi**는 모든 유닉스/리눅스 시스템에 기본적으로 설치되어 있는 **가장 기본적인** 에디터예요. 반면, **vim**은 기능이 훨씬 풍부하기 때문에 텍스트 편집이 잦은 개발자나 서버 관리자에게 특히 유용하답니다.
**실전 예시: 구체적인 사례 제목 📚 (시스템 설정 파일 수정)**
실제 상황을 가정해서 vi/vim 명령어를 적용해 봅시다. 독자가 실제 상황에 적용할 수 있도록 구체적인 예시를 제공하세요.
**사례 주인공의 상황: 40대 서버 관리자 박모모씨**
- 정보 1: 서버 접속 후 `/etc/ssh/sshd_config` 파일에서 특정 설정을 변경해야 합니다.
- 정보 2: `Port 22` 설정을 `Port 2222`로 바꾸고, 필요 없는 주석(`PermitRootLogin`) 한 줄을 삭제해야 합니다.
**계산 과정**
1) **파일 열기 및 검색:** `vi /etc/ssh/sshd_config` 명령 후, 콜론 모드에서 `/Port`를 입력해 해당 줄로 이동합니다.
2) **텍스트 수정:** `i`를 눌러 입력 모드로 전환하고 `22`를 `2222`로 수정한 후, `Esc`로 명령 모드로 돌아옵니다.
3) **줄 삭제 및 저장:** 필요 없는 주석 줄로 커서를 옮긴 후 `dd`를 눌러 한 줄을 삭제합니다. 이후 `:wq`를 입력해 저장하고 종료합니다.
**최종 결과**
- 결과 항목 1: `Port 2222` 설정이 파일에 반영되어 SSH 접속 포트가 변경되었습니다.
- 결과 항목 2: vi/vim 명령어를 익숙하게 사용하여 빠르게 설정 파일을 수정하고, 변경사항을 즉시 적용할 수 있게 되었습니다.
이처럼 vi/vim은 단순한 텍스트 편집을 넘어, 리눅스 시스템 관리의 핵심 도구로 활용된답니다. 복잡해 보여도 꾸준히 사용하다 보면 손에 익어서 다른 GUI 에디터보다 훨씬 빠르고 효율적인 작업이 가능해져요. 포기하지 마세요! 💪
**마무리: 핵심 내용 요약 📝**
지금까지 리눅스 환경에서 빛을 발하는 vi/vim 에디터의 핵심 명령어들을 자세히 알아봤습니다. 가장 중요한 건 **세 가지 모드의 전환**과 **필수 단축키**를 몸에 익히는 거예요. 글의 핵심 메시지를 다시 한번 강조하세요.
- vi/vim은 3가지 모드(명령, 입력, 콜론)로 작동한다. **Esc** 키가 모드 전환의 핵심입니다.
- 입력 모드 진입은 i, a, o를 사용한다. 각 키가 커서 위치를 다르게 시작시킨다는 것을 기억하세요.
- 삭제는 dd(한 줄), x(한 글자), dw(한 단어)를 사용한다. 이들은 `d`와 이동 명령의 조합입니다.
- 복사(yy), 붙여넣기(p)는 반복 작업을 줄여준다. `ndd` 후 `p`를 누르면 잘라내기-붙여넣기가 됩니다.
- 저장 후 종료는 `:wq` 또는 ZZ, 강제 종료는 `:q!`다. 실수 방지를 위해 가장 먼저 익혀야 할 명령어예요.
vi/vim 에디터는 처음엔 불편할 수 있지만, 숙달될수록 엄청난 효율을 가져다주는 강력한 도구랍니다. 오늘 배운 핵심 명령어들을 직접 실습해 보면서 꼭 익혀보세요! 궁금한 점이나 여러분만의 꿀팁이 있다면 댓글로 물어봐주세요~ 😊


