리눅스 초보자를 위한 필수 가이드: vim/vi 에디터 핵심 명령어 총정리

 

리눅스 커맨드라인 환경에서 파일을 편집해야 한다고요? vi/vim 에디터는 리눅스 사용자라면 반드시 알아야 할 필수 도구예요. 이 가이드에서는 초보자도 쉽게 따라 할 수 있도록 vi/vim 에디터의 세 가지 모드와 핵심 명령어들을 깔끔하게 정리해 드릴게요!

 

리눅스 서버 작업을 하다 보면 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 에디터의 핵심 명령어들을 자세히 알아봤습니다. 가장 중요한 건 **세 가지 모드의 전환**과 **필수 단축키**를 몸에 익히는 거예요. 글의 핵심 메시지를 다시 한번 강조하세요.

  1. vi/vim은 3가지 모드(명령, 입력, 콜론)로 작동한다. **Esc** 키가 모드 전환의 핵심입니다.
  2. 입력 모드 진입은 i, a, o를 사용한다. 각 키가 커서 위치를 다르게 시작시킨다는 것을 기억하세요.
  3. 삭제는 dd(한 줄), x(한 글자), dw(한 단어)를 사용한다. 이들은 `d`와 이동 명령의 조합입니다.
  4. 복사(yy), 붙여넣기(p)는 반복 작업을 줄여준다. `ndd` 후 `p`를 누르면 잘라내기-붙여넣기가 됩니다.
  5. 저장 후 종료는 `:wq` 또는 ZZ, 강제 종료는 `:q!`다. 실수 방지를 위해 가장 먼저 익혀야 할 명령어예요.

vi/vim 에디터는 처음엔 불편할 수 있지만, 숙달될수록 엄청난 효율을 가져다주는 강력한 도구랍니다. 오늘 배운 핵심 명령어들을 직접 실습해 보면서 꼭 익혀보세요! 궁금한 점이나 여러분만의 꿀팁이 있다면 댓글로 물어봐주세요~ 😊

💡

vi/vim 에디터 핵심 요약

✨ 모드 전환: Esc 키는 '명령 모드'의 시작! i/a/o로 입력, `:`로 저장/종료 모드 진입.
📊 편집 명령어: dd(줄 삭제), yy(줄 복사), p(붙여넣기)를 기본으로 익히세요.
🧮 저장/종료:
:wq (저장 후 종료), :q! (강제 종료)
👩‍💻 조합 활용: `d` + 이동 명령(`$`, `w`)으로 빠르고 효율적인 편집이 가능해요.

자주 묻는 질문 ❓

Q: vi/vim이 일반 텍스트 에디터와 다른 점은 무엇인가요?
A: 일반 에디터는 바로 텍스트를 입력하지만, vi/vim은 **명령 모드**가 기본이어서 텍스트를 입력하려면 **i, a, o** 등의 키를 눌러 **입력 모드**로 전환해야 하는 것이 가장 큰 차이점이에요. 모드를 전환하며 사용하는 것이 핵심입니다.
Q: 실수로 텍스트를 많이 지웠는데, 되돌릴 수 있나요?
A: 네, 물론이죠! **명령 모드**에서 **`u`** (undo) 키를 누르면 방금 실행한 명령을 취소할 수 있어요. 취소한 것을 다시 되돌리고 싶다면 **`Ctrl + r`**을 누르면 됩니다.
Q: 복사와 삭제 명령어에 왜 숫자를 붙여서 사용하나요?
A: `dd`(한 줄 삭제)나 `yy`(한 줄 복사) 명령어 앞에 숫자를 붙이면 **여러 줄을 한 번에** 작업할 수 있기 때문이에요. 예를 들어, **`5dd`**는 현재 커서부터 아래로 5줄을 삭제하는 명령이며, 작업 효율을 극대화해 줍니다.
Q: 파일 내용을 저장하지 않고 강제로 종료하는 방법이 궁금해요.
A: **콜론 모드**에서 **`:q!`**를 사용하면 됩니다. 이는 변경된 내용을 저장하지 않고 vi/vim을 강제로 종료하는 명령이므로, 신중하게 사용해야 합니다.
Q: vi와 vim은 어떤 차이점이 있나요?
A: **vim**은 **Vi IMproved**의 약자로, 기존 **vi**에 비해 **구문 강조(Syntax Highlighting)**, 멀티 레벨 언두(Undo) 등 더 많은 기능이 추가된 개선 버전이에요. vi 명령어는 vim에서 모두 사용할 수 있습니다.