vim과 vi 명령어 완벽 정리: 초보자를 위한 필수 가이드 📋

 

vim과 vi, 아직도 낯설게 느껴지시나요? 이 글은 터미널 환경에서 텍스트 편집의 핵심인 vim과 vi의 필수 명령어를 쉽고 빠르게 익힐 수 있도록 도와줄 거예요. 파일 편집부터 검색, 치환, 저장까지! 효율적인 작업을 위한 모든 팁을 담았습니다. [cite_start]여러분의 터미널 작업이 훨씬 수월해질 수 있도록 제가 직접 사용하며 느꼈던 유용한 기능들을 알려드릴게요! [cite: 218, 219, 220]

 

음... 솔직히 말해서 저도 처음에는 vim과 vi가 너무 어려웠어요. 까만 화면에 영어 명령어만 가득하고, 마우스도 안 움직이고, 저장하는 것조차 버벅거렸던 기억이 나네요. 😅 하지만 서버 작업을 하거나 개발을 하다 보면 이 녀석들하고 친해지는 게 정말 중요하다는 걸 깨달았죠. 이 글을 통해 여러분도 저처럼 vim과 vi의 매력에 푹 빠지실 수 있도록 차근차근 핵심 기능들을 알려드릴게요. [cite_start]저와 함께 한 단계씩 나아가면서 터미널 작업의 신세계를 경험해봐요! [cite: 221, 222]

 

vim/vi 모드 이해하기: 기본 중의 기본! 🤔

vim과 vi를 처음 접하는 분들이 가장 헷갈려 하는 부분이 바로 '모드' 개념이에요. 저는 처음에 이걸 몰라서 글자를 입력하려고 하는데 자꾸 이상한 명령어가 실행돼서 당황했던 기억이 생생하네요. 😅 vim/vi는 크게 세 가지 모드로 나눌 수 있는데, 이 모드들을 정확히 이해하는 것이 핵심입니다. [cite_start]각 모드의 역할만 알아도 반은 성공이라고 봐도 무방해요! [cite: 223, 224]

💡 알아두세요!
vim/vi는 우리가 흔히 쓰는 메모장처럼 자유롭게 글을 입력할 수 있는 프로그램이 아니에요. [cite_start]각 모드마다 기능이 다르니, 어떤 작업을 할지 미리 생각하고 해당 모드로 전환하는 습관을 들이는 것이 중요합니다. [cite: 225]

그럼 각 모드가 어떤 역할을 하는지 자세히 알아볼까요?

1. 일반 모드 (Normal Mode)

vim/vi를 실행하면 가장 먼저 만나게 되는 모드예요. 이 모드에서는 직접 글자를 입력할 수 없어요. 대신 파일 탐색, 복사, 붙여넣기, 삭제, 그리고 다른 모드로의 전환 등 다양한 명령어를 실행할 수 있습니다. 텍스트 편집의 '명령 센터'라고 생각하면 이해하기 쉬울 거예요.

2. 삽입 모드 (Insert Mode)

이름 그대로 텍스트를 '삽입'하거나 '수정'하는 모드입니다. 우리가 흔히 쓰는 메모장처럼 자유롭게 글자를 입력할 수 있는 유일한 모드죠. 일반 모드에서 특정 키(예: i, a, o 등)를 눌러 삽입 모드로 전환할 수 있어요.

3. 명령행 모드 (Command-line Mode / Last-line Mode)

파일을 저장하거나 종료하고 싶을 때, 특정 문자열을 검색하거나 치환하고 싶을 때 사용하는 모드입니다. 일반 모드에서 콜론(:)을 누르면 화면 하단에 콜론이 나타나는데, 이때부터 명령어를 입력할 수 있어요. 예를 들어, :w는 저장, :q는 종료 명령입니다.

 

파일 열고 닫기: 기본 동작 마스터하기 📊

제일 처음 vim/vi를 사용할 때 가장 먼저 해야 할 일은 파일을 열고 닫는 것이겠죠? 의외로 여기서 헤매는 분들이 많더라고요. 제가 그랬습니다! [cite_start]😅 간단한 명령어 몇 가지만 알면 쉽게 할 수 있으니 걱정 마세요. [cite: 226, 227]

파일 열기

[cite_start] [cite_start] [cite_start] [cite_start] [cite_start] [cite_start] [cite_start] [cite_start] [cite_start] [cite_start] [cite_start] [cite_start]
명령어 설명 비고 예시
vim 파일명새 파일 생성 또는 기존 파일 열기 [cite: 229]가장 기본적인 명령어입니다. [cite: 230]vim test.txt [cite: 231]
vi -R 파일명읽기 전용으로 파일 열기 [cite: 233]파일 내용을 수정할 수 없습니다. [cite: 234]vi -R config.conf [cite: 235]
vim +라인수 파일명특정 라인으로 이동하여 파일 열기 [cite: 237]대용량 파일에서 특정 위치를 바로 보고 싶을 때 유용합니다. [cite: 238]vim +100 main.py [cite: 239]
vim -o 파일1 파일2여러 파일을 수평 분할로 열기 [cite: 241]두 파일의 내용을 동시에 보면서 작업할 때 편리해요. [cite: 242]vim -o a.txt b.txt [cite: 243]

파일 닫기 및 저장하기

이건 정말 중요해요! 저도 처음엔 저장을 안 하고 닫았다가 쓴 내용을 다 날려버린 적이 한두 번이 아니거든요. 😥

  • :w: 현재 파일을 저장합니다.
  • :q: 현재 파일을 닫습니다. (수정된 내용이 없어야 함)
  • :wq 또는 :x: 파일을 저장하고 닫습니다. (가장 많이 사용합니다!)
  • :q!: 저장하지 않고 강제로 닫습니다. (수정된 내용이 있어도 강제 종료)
  • :w 파일명: 다른 이름으로 저장합니다.
⚠️ 주의하세요!
:q!는 수정된 내용을 모두 날려버리니 정말 조심해서 사용해야 해요! [cite_start]중요한 파일이라면 꼭 :wq로 저장하는 습관을 들이세요. [cite: 244]

 

자주 쓰는 일반 모드 명령어: 효율적인 이동 및 편집 🧮

일반 모드에서는 커서를 이동하거나 텍스트를 편집하는 다양한 명령어를 사용할 수 있어요. 마우스 없이 키보드만으로도 엄청 빠르게 작업을 할 수 있게 되죠! 처음엔 손에 익지 않아 답답할 수 있지만, 꾸준히 연습하면 빛을 발할 거예요.

커서 이동

h, j, k, l 키는 각각 왼쪽, 아래, 위, 오른쪽으로 한 칸씩 이동하는 명령어예요. 화살표 키를 사용해도 되지만, 숙련자들은 주로 이 키들을 사용합니다.

  • w: 다음 단어의 시작으로 이동
  • b: 이전 단어의 시작으로 이동
  • 0 또는 ^: 현재 줄의 맨 앞으로 이동
  • $: 현재 줄의 맨 뒤로 이동
  • gg: 파일의 맨 위로 이동
  • G: 파일의 맨 아래로 이동
  • 숫자G: 특정 라인으로 이동 (예: 100G는 100번째 라인으로 이동)

텍스트 편집 (일반 모드)

일반 모드에서 직접 텍스트를 입력하는 건 아니지만, 기존 텍스트를 지우거나 복사, 붙여넣기 등의 작업을 할 수 있어요.

  • x: 커서가 있는 문자 삭제
  • dd: 현재 줄 삭제
  • 숫자dd: 현재 줄부터 지정한 숫자만큼의 줄 삭제 (예: 5dd는 현재 줄 포함 5줄 삭제)
  • yw: 한 단어 복사
  • yy: 현재 줄 복사
  • 숫자yy: 현재 줄부터 지정한 숫자만큼의 줄 복사
  • p: 복사/삭제한 내용 붙여넣기 (커서 뒤)
  • P: 복사/삭제한 내용 붙여넣기 (커서 앞)
  • u: 마지막 작업 취소 (undo)
  • Ctrl + r: 취소한 작업 되돌리기 (redo)

 

삽입 모드: 본격적인 텍스트 입력! 📝

드디어 글자를 입력할 수 있는 삽입 모드입니다! 일반 모드에서 다음 명령어들을 통해 삽입 모드로 진입할 수 있어요.

  • i: 현재 커서 위치에 삽입 (insert)
  • a: 현재 커서 뒤에 삽입 (append)
  • I: 현재 줄의 맨 앞에 삽입
  • A: 현재 줄의 맨 뒤에 삽입
  • o: 현재 줄 다음에 새 줄을 만들어 삽입
  • O: 현재 줄 이전에 새 줄을 만들어 삽입
  • 삽입 모드에서 일반 모드로 돌아가려면 ESC 키를 누르면 됩니다.

 

명령행 모드: 검색, 치환, 기타 유용한 기능들 📚

명령행 모드에서는 콜론(:)을 누른 뒤 다양한 명령어를 입력할 수 있어요. 파일 저장/종료 외에도 정말 유용한 기능들이 많습니다.

검색 및 치환

  • /검색어: 파일 내에서 '검색어'를 검색합니다. n을 누르면 다음 검색 결과로, N을 누르면 이전 검색 결과로 이동합니다.
  • :s/old/new: 현재 줄에서 처음 나오는 'old'를 'new'로 치환합니다.
  • :s/old/new/g: 현재 줄에서 모든 'old'를 'new'로 치환합니다.
  • :%s/old/new/g: 파일 전체에서 모든 'old'를 'new'로 치환합니다. (가장 많이 씁니다!)
  • :%s/old/new/gc: 파일 전체에서 모든 'old'를 'new'로 치환할지 하나씩 물어봅니다.

기타 유용한 명령어

  • :set nu: 줄 번호를 표시합니다. (:set nonu는 줄 번호 숨기기)
  • :syntax on: 문법 하이라이팅을 켬
  • :! 명령어: vim/vi를 나가지 않고 쉘 명령어 실행 (예: :!ls -l)

자, 이제 실전 예시를 통해 좀 더 구체적으로 알아볼까요?

실전 예시: 시나리오로 배우는 vim/vi 활용 📚

여기서는 실제 상황을 가정하여 vim/vi 명령어를 어떻게 활용하는지 보여드릴게요. 이해도를 높이기 위해 가상의 인물을 설정했습니다.

사례 1: 40대 직장인 박모모 씨의 보고서 수정

  • 상황: 박모모 씨는 중요한 보고서 파일(report.txt)을 열어서 특정 문구를 '2023년 실적'에서 '2024년 실적'으로 변경하고, 마지막에 새로운 내용을 추가해야 합니다.
  • 문제점: 보고서 내용이 길어서 일일이 찾아서 수정하기 번거롭고, 새로운 내용을 어떤 모드에서 추가해야 할지 헷갈립니다.

해결 과정

1) 먼저 report.txt 파일을 vim으로 엽니다: vim report.txt

2) 파일 전체에서 '2023년 실적'을 '2024년 실적'으로 치환합니다: :%s/2023년 실적/2024년 실적/g 입력 후 Enter

3) 파일 맨 끝으로 이동합니다: 일반 모드에서 G 입력

4) 새 줄을 추가하고 내용을 입력합니다: 일반 모드에서 O 입력 후 "새로운 보고서 내용입니다. 최신 정보가 반영되었습니다." 입력

5) 삽입 모드를 종료하고 일반 모드로 돌아갑니다: ESC 키 입력

6) 파일을 저장하고 종료합니다: :wq 입력 후 Enter

최종 결과

- 보고서 파일 내의 모든 '2023년 실적'이 '2024년 실적'으로 변경되었으며, 마지막에 새로운 내용이 추가되었습니다.

- 박모모 씨는 효율적으로 보고서를 수정하고 저장할 수 있었습니다.

어때요? 이렇게 실제 시나리오를 통해 보니 훨씬 더 와닿지 않나요? 박모모 씨처럼 여러분도 vim/vi를 능숙하게 다룰 수 있게 될 거예요!

사례 2: 30대 개발자 김모모 씨의 코드 디버깅

  • 상황: 김모모 씨는 개발 중인 파이썬 코드(app.py)에서 150번째 라인에 있는 함수 이름 'process_data'를 'handle_data'로 변경하고, 파일 내에서 'error'라는 단어가 몇 번 나오는지 확인해야 합니다.
  • 문제점: 파일이 너무 길어서 150번째 라인을 찾기가 어렵고, 'error' 단어를 하나씩 찾아서 세기가 힘듭니다.

해결 과정

1) app.py 파일을 엽니다: vim app.py

2) 150번째 라인으로 바로 이동합니다: 일반 모드에서 150G 입력

3) 'process_data'를 'handle_data'로 치환합니다: :s/process_data/handle_data/g 입력 후 Enter

4) 파일 전체에서 'error' 단어를 검색합니다: 일반 모드에서 /error 입력 후 Enter

5) n을 반복해서 눌러 모든 'error' 단어를 확인하고, 몇 번 나타나는지 세어봅니다. (혹은 :%s/error/&/gn 명령으로 검색어 개수를 확인할 수도 있습니다.)

6) 수정된 내용을 저장하고 종료합니다: :wq 입력 후 Enter

최종 결과

- 김모모 씨는 app.py 파일의 150번째 라인으로 즉시 이동하여 함수 이름을 변경했습니다.

- 'error' 단어의 발생 횟수를 빠르고 정확하게 파악할 수 있었습니다.

이처럼 vim/vi는 개발자나 서버 관리자에게 특히 유용한 도구예요. 능숙하게 다룰수록 작업 효율이 확 올라가는 것을 느낄 수 있을 겁니다.

 

마무리: 핵심 내용 요약 📝

지금까지 vim과 vi의 필수 명령어들을 함께 살펴봤어요. 처음엔 어렵고 복잡하게 느껴질 수 있지만, 몇 가지 핵심 개념만 잘 이해하면 터미널 환경에서 여러분의 텍스트 편집 능력을 한 단계 업그레이드할 수 있답니다!

    [cite_start]
  1. 모드 이해: 일반 모드, 삽입 모드, 명령행 모드의 차이를 아는 것이 가장 중요해요. 각 모드에서 어떤 작업을 할 수 있는지 기억해두세요. [cite: 273]
  2. 파일 열고 닫기: vim 파일명으로 열고, :wq로 저장하며 종료하는 습관을 들이세요. [cite_start]:q!는 정말 주의해서 사용해야 하고요. [cite: 273]
  3. [cite_start]
  4. 자주 쓰는 일반 모드: h,j,k,l 키로 이동하고, dd로 줄 삭제, yy로 줄 복사, p로 붙여넣는 연습을 해보세요. [cite: 273]
  5. 삽입 모드 진입: i, a, o 등을 눌러 삽입 모드로 전환하고 자유롭게 텍스트를 입력하세요. [cite_start]ESC로 다시 일반 모드로 돌아오는 것을 잊지 마세요. [cite: 273]
  6. [cite_start]
  7. 명령행 모드 활용: :%s/old/new/g로 파일 전체 치환, /검색어로 검색하는 등 강력한 기능들을 활용해보세요. [cite: 273]

저도 처음엔 답답하고 어려웠지만, 매일 조금씩 사용하다 보니 어느새 손에 익더라고요. 여러분도 꾸준히 연습해서 vim/vi의 달인이 되시길 바랍니다! [cite_start]혹시 더 궁금한 점이 있다면 언제든지 댓글로 물어봐주세요~ 😊 [cite: 274]

💡

Vim/Vi 핵심 요약 가이드

[cite_start]✨ 모드 전환: 일반(ESC), 삽입(i, a, o), 명령행(:) 모드 이해가 시작입니다! [cite: 303]
[cite_start]📊 파일 관리: vim 파일명으로 열고, :wq로 저장 후 종료하는 습관을 들이세요. [cite: 304]
🧮 텍스트 편집:
삭제(dd, x), 복사(yy, yw), 붙여넣기(p, P), 실행 취소(u)
[cite_start]👩‍💻 효율적인 작업: :%s/old/new/g로 전체 치환, /검색어로 빠르게 찾으세요! [cite: 305, 306]
꾸준한 연습만이 vim/vi 마스터의 지름길입니다!

자주 묻는 질문 ❓

Q: vim과 vi는 같은 건가요?
A: 일반적으로는 거의 같다고 보셔도 무방해요. vi는 유닉스 계열 시스템의 표준 텍스트 편집기이고, vim은 vi에서 기능이 향상된 버전(Vi IMproved)입니다. [cite_start]대부분의 리눅스 배포판에는 vim이 설치되어 있어서 vim을 사용하게 될 거예요. [cite: 308]
Q: 실수로 다른 모드에 들어갔는데 어떻게 빠져나가나요?
A: 보통은 ESC 키를 여러 번 누르면 일반 모드로 돌아올 수 있습니다. [cite_start]만약 명령행 모드에서 명령어를 입력하다가 취소하고 싶다면, ESC 키를 누르거나 Ctrl + c를 누르면 됩니다. [cite: 309]
Q: 왜 화살표 키 대신 h,j,k,l을 쓰는 건가요?
A: vim은 원래 터미널 환경에서 타이핑 속도를 최대한 빠르게 하기 위해 설계되었어요. [cite_start]화살표 키는 키보드 배열상 오른손을 멀리 움직여야 하지만, h,j,k,l은 기본 홈 포지션에서 손가락을 떼지 않고도 바로 이동할 수 있어서 훨씬 효율적입니다. [cite: 310]
Q: 파일 내용을 복사해서 다른 프로그램에 붙여넣으려면 어떻게 하죠?
[cite_start]
A: vim 내에서 yy (줄 복사)나 yw (단어 복사) 등으로 내용을 복사한 후, 다른 터미널이나 프로그램에서는 마우스 오른쪽 클릭으로 붙여넣거나 Ctrl + Shift + V (리눅스 터미널)를 사용해야 합니다. vim 자체의 클립보드와 시스템 클립보드는 분리되어 있을 수 있어요. [cite: 311]
Q: 저장 없이 강제 종료하고 싶은데, 경고 메시지가 계속 떠요.
A: 그럴 때는 :q! 명령어를 사용하시면 됩니다. '!'는 '강제'라는 의미로, 저장되지 않은 변경 사항을 무시하고 강제로 종료하라는 명령어입니다. [cite_start]하지만 정말 신중하게 사용해야 한다는 점 잊지 마세요! [cite: 312]

이 블로그의 인기 게시물

2025년 달라지는 자동차 법령 총정리

2025년 국가근로장학금 완벽 가이드: 신청 자격, 소득 분위 기준, 혜택 총정리

나스닥 사상 최초 2만 돌파! 2026년 미국 주식 전망과 나스닥 100 ETF 투자 전략 총정리