혹시 터미널에서 파일을 편집하다가 ‘Vi’ 또는 ‘Vim’이라는 이름만 들어도 머리가 지끈거렸던 경험, 저만 있는 건 아니겠죠? 😅 처음에는 너무 낯설고 불편하게 느껴질 수 있지만, 한번 손에 익으면 마우스 없이도 눈 감고 편집할 수 있는 마법 같은 도구랍니다. 오늘은 여러분이 이 마법을 쉽게 배울 수 있도록 제가 직접 사용하면서 ‘이건 꼭 알아야 해!’ 싶었던 핵심 명령어들을 친근하고 자세하게 알려드릴게요! 그럼 함께 Vim/Vi의 세계로 떠나볼까요? 😊
Vim/Vi의 세 가지 핵심 모드 이해하기 🤔
Vim/Vi를 사용하기 전에 가장 먼저 알아야 할 것은 바로 ‘모드’ 개념이에요. 이 모드들을 정확히 이해해야 Vim/Vi를 자유자재로 다룰 수 있답니다. 저도 처음에 이 모드 전환이 헷갈려서 엄청 헤맸던 기억이 나네요. 🥲
모드 | 설명 | 진입/전환 방법 | 특징 |
---|---|---|---|
노멀 모드 (Normal Mode) | 명령어를 입력하는 기본 모드입니다. 텍스트 수정이 아닌 이동, 복사, 삭제 등 편집 작업을 수행해요. | Vi/Vim 실행 시 기본 진입. 다른 모드에서 ESC 키를 누르면 전환됩니다. | 강력한 편집 기능의 핵심. 방향키(h, j, k, l), 단어 이동(w, b), 라인 이동(gg, G) 등 다양한 움직임이 가능해요. |
입력 모드 (Insert Mode) | 텍스트를 직접 입력하고 수정하는 모드입니다. 우리가 흔히 아는 메모장과 같아요. | 노멀 모드에서 i (현재 위치), a (다음 위치), o (다음 줄) 등으로 진입합니다. | 실제 내용을 작성할 수 있는 유일한 모드. 특별한 기능 없이 일반적인 텍스트 편집이 가능해요. |
명령줄 모드 (Command-line Mode) | 파일 저장, 종료, 검색, 바꾸기 등 고급 명령어를 실행하는 모드입니다. | 노멀 모드에서 : (콜론)을 누르면 화면 하단에 콜론이 나타납니다. | 파일 관리(w, q), 텍스트 찾기(/, ?), 바꾸기(s) 등 강력한 기능을 제공해요. |
꼭 알아야 할 노멀 모드 명령어 🏃♀️
사실 Vim/Vi의 진정한 힘은 노멀 모드에서 나옵니다! 여기서의 움직임과 편집 명령어를 익히면 마우스를 거의 쓸 필요가 없어지죠. 저도 처음엔 어색했는데, 자꾸 쓰다 보니 정말 편하더라고요!
- 커서 이동:
- h: 왼쪽으로 이동
- j: 아래로 이동
- k: 위로 이동
- l: 오른쪽으로 이동
- 단위 이동:
- w: 다음 단어 시작으로 이동
- b: 이전 단어 시작으로 이동
- e: 현재 단어 끝으로 이동
- 0: 현재 줄의 맨 앞으로 이동
- $: 현재 줄의 맨 뒤로 이동
- 페이지 및 파일 이동:
- gg: 파일의 맨 위로 이동
- G: 파일의 맨 아래로 이동
- Ctrl + f: 한 페이지 아래로 스크롤
- Ctrl + b: 한 페이지 위로 스크롤
- 텍스트 수정 및 삭제:
- x: 현재 커서의 문자 삭제
- dw: 현재 단어 삭제 (delete word)
- dd: 현재 줄 삭제 (delete line)
- r: 현재 커서의 문자 교체
- cw: 현재 단어 변경 (change word, 삭제 후 입력 모드 전환)
- cc: 현재 줄 변경 (change line, 삭제 후 입력 모드 전환)
- 복사 (Yank) 및 붙여넣기 (Put):
- yw: 현재 단어 복사 (yank word)
- yy: 현재 줄 복사 (yank line)
- p: 현재 커서 뒤에 붙여넣기
- P: 현재 커서 앞에 붙여넣기
- 실행 취소 및 다시 실행:
- u: 마지막 작업 실행 취소 (undo)
- Ctrl + r: 마지막 실행 취소 되돌리기 (redo)
명령줄 모드 활용: 파일 관리 & 검색/바꾸기 🔍
파일을 저장하고, 닫고, 특정 텍스트를 찾거나 바꾸는 작업은 명령줄 모드에서 이루어집니다. 이 모드의 명령어들은 콜론(:
)으로 시작하는 게 특징이에요. 처음엔 생소할 수 있지만, 몇 번만 써보면 금방 익숙해질 거예요.
명령줄 모드에서 명령어를 입력한 후에는 반드시 Enter 키를 눌러야 명령이 실행됩니다. 또한, 파일 이름이나 경로를 입력할 때는 자동 완성을 위해 Tab 키를 활용할 수 있어요!
파일 저장 및 종료
:w
: 현재 파일 저장:q
: Vim/Vi 종료 (변경 사항이 없거나 저장된 경우):wq
또는:x
: 저장하고 종료:q!
: 변경 사항을 저장하지 않고 강제 종료:w [파일명]
: 현재 파일을 다른 이름으로 저장
텍스트 검색 및 바꾸기
텍스트를 찾는 건 정말 자주 쓰는 기능이죠! 특히나 정규 표현식을 활용하면 아주 강력한 검색도 가능하답니다.
/패턴
: 현재 커서부터 아래 방향으로 ‘패턴’ 검색. (n
으로 다음 찾기,N
으로 이전 찾기)?패턴
: 현재 커서부터 위 방향으로 ‘패턴’ 검색.:%s/old/new/g
: 파일 전체에서 ‘old’를 ‘new’로 모두 바꾸기 (g는 global, 즉 모든 일치 항목을 의미):%s/old/new/gc
: 파일 전체에서 ‘old’를 ‘new’로 바꾸되, 바꿀 때마다 확인 질문 (c는 confirm):줄시작,줄끝s/old/new/g
: 특정 줄 범위 내에서 바꾸기 (예::10,20s/old/new/g
는 10줄부터 20줄까지)
:%s/old/new/g
명령은 되돌리기(u
)가 가능하지만, 큰 파일을 다루거나 중요한 변경을 할 때는 반드시 미리 저장하거나 /gc
옵션을 사용하는 것이 좋아요. 혹시라도 실수하면 정말… 😱 제가 예전에 한번 저장 안 하고 강제 종료했다가 날린 파일 생각하면 아직도 눈물이 나네요.
실전 예시: Vim/Vi로 일상 작업 처리하기 📚
이론만으로는 부족하죠! 실제 상황에서 Vim/Vi 명령어를 어떻게 활용하는지 몇 가지 시나리오를 통해 알아볼게요. 저도 이런 식으로 연습하면서 익혔답니다.
사례 1: 40대 직장인 박모모 씨의 보고서 수정
- 상황: 박모모 씨는 서버에서 급하게 보고서 파일을 열어 오타 ‘데이터베이스’를 ‘데이터 베이스’로 수정해야 합니다.
- Vim/Vi 활용:
vim report.txt
(보고서 파일 열기)- 노멀 모드에서
:/데이터베이스
입력 후 엔터 (오타 검색) :s/데이터베이스/데이터 베이스/g
입력 후 엔터 (현재 줄의 모든 ‘데이터베이스’를 ‘데이터 베이스’로 변경)- 혹은
:%s/데이터베이스/데이터 베이스/g
(파일 전체에서 변경) :wq
입력 후 엔터 (저장하고 종료)
사례 2: 30대 개발자 김모모 씨의 코드 최적화
- 상황: 김모모 씨는 특정 함수에서 사용되는 변수명
old_variable
을new_variable
로 일괄 변경하고 싶습니다. 동시에 주석 처리된 부분은 그대로 두고 싶네요. - Vim/Vi 활용:
vim main.py
(Python 코드 파일 열기):/def my_function()
(해당 함수 시작 지점 검색)ma
(현재 위치를 ‘a’ 마크로 저장)G
(파일 맨 아래로 이동):'a,.s/old_variable/new_variable/gc
(마크 ‘a’부터 현재 위치까지 확인하며 바꾸기. ‘gc’를 통해 주석 부분은 건너뛸 수 있어요.):wq
(저장하고 종료)
사례 3: 20대 대학생 이모모 씨의 과제 정리
- 상황: 이모모 씨는 텍스트 파일로 정리된 과제 노트에서 중요한 키워드들만 빠르게 복사해서 다른 파일에 붙여넣고 싶습니다.
- Vim/Vi 활용:
vim notes.txt
(노트 파일 열기)/중요 키워드
(검색)yy
(현재 줄 복사):e new_summary.txt
(새 파일 열기, 아직 저장 안 됨)p
(복사한 줄 붙여넣기)- 이후 다시
:b#
로 이전 파일로 돌아가 다른 키워드를 복사하고:b#
로 새 파일로 돌아와 붙여넣기를 반복합니다. - 작업 완료 후
:wq
(저장하고 종료)
마무리: Vim/Vi, 꾸준함이 답이다! 📝
어떠셨나요? Vim/Vi가 생각보다 훨씬 더 많은 기능을 가지고 있다는 걸 느끼셨을 거예요. 처음엔 모든 명령어를 외우려 하지 마시고, 오늘 제가 알려드린 핵심 명령어들부터 하나씩 손에 익히는 것이 중요합니다. 저도 처음엔 메모지에 적어놓고 옆에 두고 보면서 사용했었어요. 😉
- 모드 전환은 기본 중의 기본! ESC, i, :, Enter는 숙달하세요.
- 자주 쓰는 이동 및 수정 명령어: h,j,k,l, w, b, dd, yy, p, u 등을 익히면 기본적인 편집은 문제없어요.
- 파일 저장과 종료: :wq 또는 😡는 습관처럼 사용해야 합니다.
- 검색 및 바꾸기: /패턴과 :%s/old/new/g는 복잡한 문서 작업에 필수예요.
- 꾸준한 연습만이 살 길! 매일 조금씩이라도 Vim/Vi를 사용해보세요. 어느새 여러분의 손이 키보드 위에서 춤을 추고 있을 겁니다!
Vim/Vi는 단순한 텍스트 에디터를 넘어, 여러분의 개발 및 문서 작업 생산성을 비약적으로 높여줄 강력한 도구입니다. 이 글이 여러분이 Vim/Vi와 친해지는 데 조금이나마 도움이 되었기를 바랍니다! 혹시 더 궁금한 점이 있다면 언제든지 댓글로 물어봐주세요~ 😊
Vim/Vi 핵심 요약: 이것만 기억하세요!
자주 묻는 질문 ❓
:wq
를 입력 후 엔터를 누르면 저장하고 종료됩니다. 변경 사항을 무시하고 강제 종료하려면 :q!
를 입력 후 엔터를 누르세요.yy
로 복사한 내용은 레지스터에 저장되어 p
또는 P
명령으로 여러 번 붙여넣을 수 있습니다. 다른 내용을 복사하기 전까지는 계속 붙여넣기가 가능해요./찾을_단어
를 입력하고 엔터를 누르면 해당 단어가 하이라이트 됩니다. 하이라이트를 끄려면 :nohl
(no highlight)를 입력하면 돼요.