Vim/Vi 명령어 완벽 정리: 왕초보부터 숙련자까지 필수 치트시트

 

당신도 이제 Vim/Vi 마스터! 텍스트 편집의 신세계, Vim과 Vi의 필수 명령어들을 쉽고 빠르게 익히고 싶으신가요? 기사 내용을 간략히 요약하고 독자가 계속 읽도록 유도하는 문장을 넣으세요!

 

갑자기 서버에 접속해서 파일을 수정해야 하는데, 익숙한 마우스 대신 까만 화면에 **Vi**나 **Vim**이 켜져서 당황하신 적 있으시죠? 저도 처음엔 이게 뭐지 싶었어요. 마우스도 안되고, 방향키도 이상하게 작동하고... 이게 바로 리눅스/유닉스 환경에서 가장 강력하고 필수적인 텍스트 편집기, Vim(Vi Improved)과 그 전신인 Vi거든요.

하지만 걱정 마세요! 이 글을 통해 Vim/Vi의 기본적인 사용법부터 고급 기능까지 쉽고 체계적으로 정리해 드릴게요. 이 글만 완독하시면 복잡한 설정 파일 수정이나 간단한 코드 편집을 **키보드만으로 마법처럼** 처리하실 수 있을 거예요. 키보드에서 손 떼지 않고 초고속으로 파일을 편집하고 싶다면, 지금 바로 핵심 명령어 치트시트를 확인해 보세요! 😊

 

Vim/Vi의 핵심: 모드(Mode)의 이해 🤔

Vim이 처음 사용자에게 어렵게 느껴지는 가장 큰 이유는 **'모드' 개념** 때문이에요. 일반적인 텍스트 편집기는 그냥 타이핑하면 입력이 되지만, Vim은 상황에 따라 모드를 바꿔줘야 하거든요. 이 모드만 이해하면 절반은 마스터한 거나 다름없어요. 이 섹션에서는 주제에 대한 기본 개념이나 배경 정보를 소개하는 것이 좋습니다.

가장 기본이 되는 세 가지 모드와 전환 방법을 알려드릴게요. 독자가 쉽게 이해할 수 있도록 전문 용어는 가능한 쉽게 풀어 설명하세요.

모드 주요 역할 전환 명령어 기타 정보
**일반 모드 (Normal Mode)** 커서 이동, 삭제, 복사, 붙여넣기 등 **명령 수행**의 기본 모드 **ESC** 키 (다른 모드에서 일반 모드로 돌아올 때) Vim 실행 시 기본 상태
**입력 모드 (Insert Mode)** 텍스트를 **실제 입력**하는 모드 (일반 편집기와 유사) **i, a, o** 등 (일반 모드에서 진입) 화면 하단에 `-- INSERT --` 표시
**명령줄 모드 (Command-line Mode)** 저장, 종료, 검색, 치환 등 **파일/에디터 제어** 명령 수행 **: (콜론)**, **/**, **?** (일반 모드에서 진입) 화면 하단에 입력창 표시
💡 알아두세요!
Vim에서 작업할 땐 항상 **ESC**를 습관처럼 누르는 게 중요해요. 어떤 모드에 있든 일단 ESC를 누르면 **일반 모드**로 돌아오거든요. 일반 모드에서 다음 명령을 시작하는 것이 가장 안전하고 올바른 방법이랍니다! 시각적으로 구분되어 독자의 주의를 끌 수 있는 내용을 넣으세요.

 

필수 명령어 치트시트: 일반 모드 (Normal Mode) ⌨️

일반 모드에서는 단순한 커서 이동부터 텍스트 삭제, 복사, 붙여넣기 등 편집의 핵심 동작을 수행해요. 이 모드에서는 모든 키 입력이 명령으로 인식되죠. 이 섹션에서는 주제에 대한 더 구체적인 정보나 데이터를 제공하는 것이 좋습니다.

**커서 이동 및 화면 이동**

구분 명령어 설명 활용 팁
기본 이동 **h, j, k, l** **h** (좌), **j** (하), **k** (상), **l** (우) 이동 방향키 대신 사용 (더 빠름)
단어 이동 **w, b, e** **w** (다음 단어 시작), **b** (이전 단어 시작), **e** (현재 단어 끝) **3w**는 3단어 앞으로 이동
줄 이동 **0, $, ^** **0** (줄의 맨 앞), **$** (줄의 맨 끝), **^** (줄의 내용 시작) **H, M, L**은 화면 기준 이동
파일 이동 **gg, G** **gg** (파일 맨 위), **G** (파일 맨 아래) **10G**는 10번째 줄로 이동

**텍스트 편집 (삭제, 복사, 붙여넣기)**

Vim의 편집 명령어는 **동사 + 명사(또는 범위)** 구조를 가져요. 예를 들어, **d** (delete, 삭제) + **w** (word, 단어)는 **dw** (단어 삭제)가 되는 식이죠. **y** (yank, 복사)와 **p** (put, 붙여넣기)도 자주 사용됩니다.

구분 명령어 설명 활용 팁
삭제/잘라내기 **x, dd, dw, D** **x** (한 글자 삭제), **dd** (한 줄 삭제), **dw** (한 단어 삭제), **D** (커서부터 줄 끝까지 삭제) 삭제된 내용은 자동으로 복사됨
복사 **yy, yw, y$** **yy** (한 줄 복사), **yw** (한 단어 복사), **y$** (커서부터 줄 끝까지 복사) **5yy**는 5줄 복사
붙여넣기 **p, P** **p** (커서 다음/아래에 붙여넣기), **P** (커서 앞/위에 붙여넣기) 줄 복사 시 **p**는 다음 줄에 삽입
실행 취소/반복 **u, Ctrl + r, .** **u** (실행 취소), **Ctrl + r** (실행 취소 되돌리기), **.** (마지막 명령 반복) **u**는 정말 유용합니다!
⚠️ 주의하세요!
Vim에서 텍스트를 삭제하는 명령어(**d, x, dd** 등)는 사실상 해당 텍스트를 **'잘라내기'** 하는 것과 같아요. 즉, 삭제된 내용이 클립보드(레지스터)에 저장되기 때문에 **p** 명령어로 붙여넣기가 가능합니다. 실수로 중요한 내용을 삭제했더라도 **u**를 누르거나, 바로 **p**를 눌러 복구할 수 있으니 당황하지 마세요!

 

 

고급 활용: 검색 및 치환, 저장 및 종료 💾

명령줄 모드(`:`)는 Vim의 강력한 기능 중 하나예요. 파일을 저장하거나 종료할 때, 또는 문서 전체에서 특정 내용을 찾거나 한 번에 바꿀 때 이 모드를 사용하죠. 이 섹션에서는 주제에 대한 응용 방법이나 실제 계산 방법 등 실용적인 정보를 제공하는 것이 좋습니다.

**파일 관리 및 종료**

**📝 필수 저장/종료 공식**

**:wq = 저장 (write) + 종료 (quit)**

  • **:w** : 현재 파일 내용을 저장합니다.
  • **:q** : 파일 변경 사항이 없으면 종료합니다.
  • **:q!** : **경고!** 파일 변경 사항을 무시하고 강제로 종료합니다. (저장 없이 나갈 때)
  • **:wq** 또는 **ZZ** : 저장하고 종료합니다.
  • **:e!** : 파일 내용을 마지막 저장 상태로 되돌립니다. (변경 사항 취소)

**검색 및 치환 (Search & Replace) 🔍**

문서에서 원하는 내용을 찾는 것은 **슬래시(` / `)** 명령을, 내용을 바꾸는 것은 **콜론(` : `)** 명령을 사용해요. 특히 치환(replace) 기능은 정규표현식과 결합해 아주 강력하게 사용할 수 있죠.

**1) 검색 명령어:** `/찾을_문자열` (일반 모드에서 사용)

**2) 검색 이동:** `n` (다음 찾기), `N` (이전 찾기)

→ 검색 후 원하는 위치로 빠르게 이동할 수 있어요.

**🔢 치환 명령어 공식**

**:범위 s/찾을_내용/바꿀_내용/플래그**

  • **범위**: `%` (전체 문서), `.,$` (현재 줄부터 끝까지), `1,5` (1줄부터 5줄까지)
  • **플래그**: `g` (해당 줄의 모든 일치 항목 치환), `c` (치환 전 확인), `i` (대소문자 구분 없이)

**예시:** 문서 전체에서 "Vi"를 "Vim"으로 모두 바꾸고 싶다면, 일반 모드에서 다음 명령을 입력하면 돼요:

:%s/Vi/Vim/g

이 명령 하나로 수백 개의 단어를 한 번에 바꿀 수 있다니, 정말 놀랍지 않나요? 숙련된 개발자나 시스템 관리자들이 Vim을 사랑하는 이유 중 하나랍니다. 이 강력함을 직접 경험해보세요!

 

실전 예시: Vim 초보, 박모모씨의 파일 수정 📚

자, 이제 실생활 예시를 통해 배운 명령어를 적용해 볼까요? 독자가 실제 상황에 적용할 수 있도록 구체적인 예시를 제공하세요.

**사례 주인공: 40대 직장인 박모모씨의 상황**

  • **미션:** 리눅스 서버에서 웹 설정 파일(**`nginx.conf`**)의 포트 번호를 **80**에서 **8080**으로 바꾸고, 불필요한 주석 한 줄을 삭제해야 합니다.
  • **초기 상황:** `vi nginx.conf` 명령으로 파일을 열었으며, 현재 파일 중간쯤에 있습니다.

**박모모씨의 작업 과정**

1) **포트 번호 변경:** 일반 모드에서 `:/listen 80`으로 **80**을 검색 후, `:s/80/8080/` 명령으로 현재 줄의 첫 번째 **80**을 **8080**으로 치환합니다. (만약 줄에 여러 개가 있다면 `g` 플래그를 추가하면 되죠.)

2) **주석 삭제:** 커서를 삭제할 줄로 이동한 후, `dd`를 눌러 해당 줄 전체를 삭제합니다. (줄 삭제 후 커서가 자동으로 다음 줄로 이동합니다.)

**최종 결과**

- **작업 완료:** 변경된 내용을 저장하고 종료하기 위해 `:wq`를 입력했습니다.

- **결과:** 단 3개의 명령으로 설정 파일 수정 완료! (검색, 치환, 삭제, 저장/종료) 박모모씨는 이제 터미널 환경에서도 자신감을 얻게 되었답니다.

이처럼 Vim은 키보드에서 손을 떼지 않고도 빠르고 효율적으로 편집 작업을 수행할 수 있도록 설계되어 있어요. 처음엔 어색하더라도 이 명령들을 반복해서 사용해 보는 것이 핵심이에요. 독자가 이 사례를 통해 배울 수 있는 점을 강조하세요.

 

마무리: 핵심 내용 요약 📝

지금까지 Vim/Vi의 핵심 모드 개념부터 필수 명령어까지 자세히 알아봤어요. 핵심은 **일반 모드**에서 모든 명령이 시작된다는 점과 **ESC** 키를 활용해 모드를 자유자재로 전환하는 것이라는 걸 잊지 마세요!

  1. **모드 전환:** **ESC**는 일반 모드로, **i, a, o** 등은 입력 모드로 전환하는 핵심 키입니다.
  2. **커서 이동:** **h, j, k, l**과 **w, b, gg, G**를 사용해 마우스 없이 빠르게 이동하는 데 익숙해지세요.
  3. **편집 명령:** **d (삭제/잘라내기), y (복사), p (붙여넣기)**는 자주 쓰는 단축키입니다. **3dd**처럼 숫자와 조합해 활용해 보세요.
  4. **파일 관리:** **:w** (저장), **:q** (종료), **:wq** (저장 후 종료)는 생존 명령어입니다.
  5. **고급 기능:** **:/검색어**와 **:%s/old/new/g** 치환 명령은 작업을 혁신적으로 빠르게 만들어 줄 거예요.

이제 여러분은 Vim/Vi를 두려워할 필요가 없어요. 가장 중요한 것은 **꾸준한 반복 연습**입니다. 터미널에서 파일을 열 때마다 의식적으로 Vim 명령어를 사용해 보세요. 곧 키보드에서 손가락이 미끄러지듯 편집하는 자신을 발견하게 될 거예요! 궁금한 점은 댓글로 물어봐주세요~ 😊

💡

Vim/Vi 핵심 치트키 요약

✨ 모드 전환: ESC (일반 모드), i, a, o (입력 모드). ESC로 항상 일반 모드 복귀를 습관화하세요!
📊 편집/이동: **dd (줄 삭제)**, **yy (줄 복사)**, **p (붙여넣기)**, **h/j/k/l (이동)**, **gg/G (파일 상하단 이동)**.
🧮 저장/종료:
저장 후 종료 명령 = :wq
👩‍💻 검색/치환: **/** (검색), **n/N** (다음/이전 찾기), **:%s/old/new/g** (전체 치환) 명령어를 기억하세요.

자주 묻는 질문 ❓

Q: Vim과 Vi의 차이점은 무엇인가요?
A: Vi는 Unix 환경의 초기 텍스트 편집기이고, Vim은 **Vi Improved**의 약자로 Vi의 기능을 확장하고 개선한 버전이에요. 현대 리눅스 배포판에서는 Vi 명령을 입력해도 보통 더 강력한 Vim이 실행된답니다.
Q: Vim에서 커서 이동이 왜 h, j, k, l 키를 사용하나요?
A: 이는 초기 터미널 기기인 **ADM-3A**의 키보드 배열에서 방향키가 해당 위치에 있었기 때문이에요. Vim/Vi는 이 전통을 계승하여 키보드 중앙에 손을 둔 채로 효율적으로 이동할 수 있도록 설계되었습니다.
Q: 실수로 입력 모드에서 `:q!`를 입력했는데, 명령이 실행되지 않아요. 왜 그럴까요?
A: **`:q!`** 같은 명령줄 모드 명령은 반드시 **일반 모드**에서 콜론(`:`)을 눌러 진입해야 실행돼요. 입력 모드에서는 `:q!`가 그냥 텍스트로 입력될 뿐 명령으로 인식되지 않으니, 먼저 **ESC**를 눌러 일반 모드로 돌아간 후 다시 시도해 보세요.
Q: Vim에서 줄 번호를 보이게 하려면 어떻게 해야 하나요?
A: 일반 모드에서 **`:set nu`** (또는 `:set number`) 명령을 입력하면 줄 번호가 표시됩니다. 다시 숨기려면 **`:set nonu`** 를 입력하면 되고요. 설정 파일(`.vimrc`)에 추가하면 Vim 실행 시 항상 적용할 수도 있어요.
Q: Vim을 더 쉽게 배우는 팁이 있을까요?
A: Vim을 설치하면 기본으로 제공되는 대화형 튜토리얼인 **`vimtutor`**를 꼭 해보세요! 약 30분 정도면 Vim 사용의 기초를 탄탄하게 다질 수 있어요.

이 블로그의 인기 게시물

2026년 장애인 평생교육이용권 신청 방법과 지원 내용 완벽 가이드

2025년 아이돌봄서비스 지원대상 및 신청방법 완벽 가이드 (소득기준 및 정부지원금 총정리)

2025 신사업창업사관학교 예비창업자 지원혜택 및 신청방법 총정리 (최대 4천만원)