vim과 vi 명령어 완벽 정리: 초보자를 위한 필수 가이드 📋
음... 솔직히 말해서 저도 처음에는 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]
파일 열기
| 명령어 | 설명 | 비고 | 예시 |
|---|---|---|---|
vim 파일명 |
[cite_start]새 파일 생성 또는 기존 파일 열기 [cite: 229] | [cite_start]가장 기본적인 명령어입니다. [cite: 230] | [cite_start]vim test.txt [cite: 231] |
vi -R 파일명 |
[cite_start]읽기 전용으로 파일 열기 [cite: 233] | [cite_start]파일 내용을 수정할 수 없습니다. [cite: 234] | [cite_start]vi -R config.conf [cite: 235] |
vim +라인수 파일명 |
[cite_start]특정 라인으로 이동하여 파일 열기 [cite: 237] | [cite_start]대용량 파일에서 특정 위치를 바로 보고 싶을 때 유용합니다. [cite: 238] | [cite_start]vim +100 main.py [cite: 239] |
vim -o 파일1 파일2 |
[cite_start]여러 파일을 수평 분할로 열기 [cite: 241] | [cite_start]두 파일의 내용을 동시에 보면서 작업할 때 편리해요. [cite: 242] | [cite_start]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]
- 모드 이해: 일반 모드, 삽입 모드, 명령행 모드의 차이를 아는 것이 가장 중요해요. 각 모드에서 어떤 작업을 할 수 있는지 기억해두세요. [cite: 273]
- 파일 열고 닫기:
vim 파일명으로 열고,:wq로 저장하며 종료하는 습관을 들이세요. [cite_start]:q!는 정말 주의해서 사용해야 하고요. [cite: 273]
[cite_start] - 자주 쓰는 일반 모드:
h,j,k,l키로 이동하고,dd로 줄 삭제,yy로 줄 복사,p로 붙여넣는 연습을 해보세요. [cite: 273] - 삽입 모드 진입:
i,a,o등을 눌러 삽입 모드로 전환하고 자유롭게 텍스트를 입력하세요. [cite_start]ESC로 다시 일반 모드로 돌아오는 것을 잊지 마세요. [cite: 273]
[cite_start] - 명령행 모드 활용:
:%s/old/new/g로 파일 전체 치환,/검색어로 검색하는 등 강력한 기능들을 활용해보세요. [cite: 273]
저도 처음엔 답답하고 어려웠지만, 매일 조금씩 사용하다 보니 어느새 손에 익더라고요. 여러분도 꾸준히 연습해서 vim/vi의 달인이 되시길 바랍니다! [cite_start]혹시 더 궁금한 점이 있다면 언제든지 댓글로 물어봐주세요~ 😊 [cite: 274]
Vim/Vi 핵심 요약 가이드
vim 파일명으로 열고, :wq로 저장 후 종료하는 습관을 들이세요. [cite: 304]
:%s/old/new/g로 전체 치환, /검색어로 빠르게 찾으세요! [cite: 305, 306]
자주 묻는 질문 ❓
ESC 키를 여러 번 누르면 일반 모드로 돌아올 수 있습니다. [cite_start]만약 명령행 모드에서 명령어를 입력하다가 취소하고 싶다면, ESC 키를 누르거나 Ctrl + c를 누르면 됩니다. [cite: 309]yy (줄 복사)나 yw (단어 복사) 등으로 내용을 복사한 후, 다른 터미널이나 프로그램에서는 마우스 오른쪽 클릭으로 붙여넣거나 Ctrl + Shift + V (리눅스 터미널)를 사용해야 합니다. vim 자체의 클립보드와 시스템 클립보드는 분리되어 있을 수 있어요. [cite: 311]:q! 명령어를 사용하시면 됩니다. '!'는 '강제'라는 의미로, 저장되지 않은 변경 사항을 무시하고 강제로 종료하라는 명령어입니다. [cite_start]하지만 정말 신중하게 사용해야 한다는 점 잊지 마세요! [cite: 312]

