Vi/Vim 명령어 완벽 정복: 초보자도 5분 만에 배우는 필수 단축키 가이드
리눅스나 유닉스 환경에서 작업하다 보면 터미널에서 텍스트 파일을 편집해야 하는 경우가 많습니다. 이때 가장 기본적이면서도 강력한 도구가 바로 vi (또는 향상된 버전인 Vim) 편집기입니다. vi는 거의 모든 유닉스 계열 시스템에 기본적으로 설치되어 있어, 어떤 환경에서든 바로 사용할 수 있다는 큰 장점이 있습니다.
처음에는 다소 생소한 모드(mode) 개념과 수많은 단축키 때문에 어렵게 느껴질 수 있지만, 손에 익으면 GUI 편집기 못지않게, 아니 그 이상으로 빠르고 효율적인 작업이 가능합니다. 이 글에서는 vi/Vim 사용에 꼭 필요한 핵심 개념과 명령어를 쉽고 체계적으로 정리해 드립니다.
1. Vi/Vim의 핵심: 3가지 모드 이해하기
vi 편집기는 다른 텍스트 편집기와 달리 여러 가지 '모드'를 가지고 있으며, 현재 어떤 모드에 있는지에 따라 키 입력의 동작이 달라집니다. 가장 중요하고 기본적인 세 가지 모드는 다음과 같습니다.
1. 명령 모드 (Command Mode)
vi를 처음 실행하거나, 다른 모드에서ESC키를 누르면 진입하는 기본 모드입니다.- 이 모드에서는 글자를 직접 입력할 수 없으며, 대신 커서 이동, 텍스트 삭제, 복사, 붙여넣기 등의 편집 명령을 수행합니다.
- 화면 하단에 특별한 표시가 없습니다.
2. 입력 모드 (Insert Mode)
- 명령 모드에서
i,a,o(소문자) 등의 키를 누르면 입력 모드로 전환됩니다. - 이 모드에서 키보드로 입력하는 내용이 파일에 직접 작성됩니다.
- 화면 하단에
-- INSERT --또는-- 입력 --과 같은 표시가 나타납니다. - 명령 모드로 돌아가려면
ESC키를 누릅니다.
3. 마지막 행 모드 (Last Line Mode / Ex Mode)
- 명령 모드에서 콜론 (
:)을 입력하면 마지막 행 모드로 전환됩니다. - 화면 하단에
:프롬프트가 나타나며, 이곳에 명령어를 입력하고Enter키를 눌러 실행합니다. - 주로 파일 저장, 종료, 검색, 치환, 환경 설정 등의 강력한 기능들을 사용합니다.
- 명령 실행 후 대부분 명령 모드로 자동 전환되거나,
ESC키로 명령 모드로 돌아갈 수 있습니다.
모드 전환 요약
- 어떤 모드에서든 →
ESC→ 명령 모드 - 명령 모드 →
i,a,o등 → 입력 모드 - 명령 모드 →
:→ 마지막 행 모드
2. 자주 쓰는 명령어: 명령 모드 (Command Mode)
명령 모드는 vi 사용의 핵심입니다. 다양한 단축키를 익혀두면 편집 속도가 매우 빨라집니다.
2.1. 커서 이동
h: 왼쪽으로 한 글자 이동j: 아래로 한 줄 이동k: 위로 한 줄 이동l: 오른쪽으로 한 글자 이동w: 다음 단어의 시작으로 이동 (word)b: 이전 단어의 시작으로 이동 (backward)0(숫자 0): 현재 줄의 맨 앞으로 이동$: 현재 줄의 맨 뒤로 이동gg: 파일의 맨 처음 줄로 이동G: 파일의 맨 마지막 줄로 이동Ctrl + f: 한 화면 아래로 이동 (forward)Ctrl + b: 한 화면 위로 이동 (backward)
2.2. 입력 모드로 전환
i: 현재 커서 위치 앞(insert)에 입력 시작a: 현재 커서 위치 뒤(append)에 입력 시작o(소문자): 현재 줄 아래(open)에 새 줄을 만들고 입력 시작I(대문자): 현재 줄의 맨 앞에서 입력 시작A(대문자): 현재 줄의 맨 뒤에서 입력 시작O(대문자): 현재 줄 위에 새 줄을 만들고 입력 시작
2.3. 텍스트 삭제
x: 현재 커서 위치의 글자 한 개 삭제X: 현재 커서 앞의 글자 한 개 삭제dw: 현재 커서 위치부터 단어 끝까지 삭제 (delete word)dd: 현재 줄 전체 삭제 (이 명령어는 '잘라내기' 기능도 겸합니다)숫자dd(예:3dd): 현재 줄부터 숫자만큼의 줄 삭제d$: 현재 커서부터 줄의 끝까지 삭제d0: 현재 커서부터 줄의 처음까지 삭제
2.4. 텍스트 복사 및 붙여넣기 (Yank & Paste)
yy: 현재 줄 전체 복사 (yank)숫자yy(예:3yy): 현재 줄부터 숫자만큼의 줄 복사p(소문자): 복사하거나 삭제(dd)한 내용을 현재 커서 다음 줄에 붙여넣기 (paste)P(대문자): 복사하거나 삭제(dd)한 내용을 현재 커서 이전 줄에 붙여넣기
2.5. 실행 취소 및 다시 실행
u(소문자): 마지막으로 실행한 명령 취소 (undo)Ctrl + r: 마지막으로 취소한 명령 다시 실행 (redo)
3. 자주 쓰는 명령어: 마지막 행 모드 (Last Line Mode)
마지막 행 모드는 파일 관리 및 고급 편집 기능을 제공합니다. 명령어 입력 후에는 반드시 Enter를 눌러야 실행됩니다.
3.1. 파일 저장 및 종료
:w: 현재 파일 저장 (write):w 파일명: 지정한파일명으로 저장 (다른 이름으로 저장):q: 편집기 종료 (quit). 변경 사항이 없을 때만 가능.:q!: 변경 사항을 저장하지 않고 강제로 편집기 종료.:wq또는:x: 저장하고 종료.:wq!: 강제로 저장하고 종료.
3.2. 검색
:/찾을_문자열: 현재 커서 위치에서 아래 방향으로찾을_문자열검색:?찾을_문자열: 현재 커서 위치에서 위 방향으로찾을_문자열검색n: 다음 검색 결과로 이동 (next)N: 이전 검색 결과로 이동
3.3. 치환 (바꾸기)
:%s/기존문자열/새문자열/g: 파일 전체(%)에서 모든(g)기존문자열을새문자열로 변경 (substitute):%s/기존문자열/새문자열/gc: 위와 동일하나, 변경할 때마다 사용자에게 확인(c) 받음
3.4. 환경 설정 (자주 사용되는 것)
:set nu또는:set number: 줄 번호 표시:set nonu또는:set nonumber: 줄 번호 숨김
4. 실전! Vi/Vim 사용 흐름 예시
말로만 듣는 것보다 직접 해보는 것이 가장 좋습니다. 간단한 파일을 만들고 편집하는 과정을 따라 해 보세요.
-
파일 열기 (또는 새로 만들기)
터미널에vi testfile.txt를 입력하고Enter를 누릅니다.
(만약testfile.txt가 존재하지 않으면 새 파일이 열립니다. 이때는 명령 모드로 시작합니다.) -
입력 모드로 전환하여 내용 작성
명령 모드에서i키를 누릅니다. 화면 하단에-- INSERT --가 표시됩니다.
이제 원하는 내용을 입력합니다. 예를 들어:
Hello, vi world! This is a test file. Learning vi is fun. -
명령 모드로 돌아오기
내용 입력이 끝났으면ESC키를 눌러 명령 모드로 돌아옵니다.-- INSERT --표시가 사라집니다. -
편집하기
k키를 두 번 눌러 "This is a test file." 줄로 이동합니다.dd를 입력하여 해당 줄을 삭제합니다.G키를 눌러 파일의 마지막 줄("Learning vi is fun.")로 이동합니다.p키를 눌러 방금 삭제했던 줄을 붙여넣습니다.
-
검색하기
:/fun이라고 입력하고Enter를 누릅니다. "fun"이라는 단어가 포함된 곳으로 커서가 이동합니다. -
저장하고 종료하기
ESC키를 눌러 명령 모드인지 확인한 후,:wq를 입력하고Enter를 누릅니다.
파일이 저장되고vi편집기가 종료됩니다.
5. 나만의 Vi/Vim 핵심 요약 (자주 쓰는 명령어)
처음에는 많은 명령어가 부담스러울 수 있습니다. 아래는 실제로 가장 자주 사용하는 명령어들이니, 이것부터 익혀보세요!
- 모드 전환:
ESC(습관처럼 누르기!),i(입력),:(마지막 행 모드) - 명령 모드 필수:
- 이동:
h,j,k,l,w,b,0,$,G,gg - 삭제/잘라내기:
x,dd - 복사:
yy - 붙여넣기:
p - 실행 취소:
u
- 이동:
- 마지막 행 모드 필수:
- 저장/종료:
:w,:q,:wq,:q!(특히 강제 종료!) - 검색:
/찾을내용 - 설정:
:set nu(줄 번호 보기)
- 저장/종료: