vi 편집기 명령어 정리

vi는 유닉스/리눅스 계열 시스템의 기본 텍스트 편집기로, 명령 모드(Command Mode), 입력 모드(Insert Mode), 명령행 모드(Last Line/ex Mode) 세 가지 모드로 동작합니다.

명령 모드 ──(i,a,o 등)──▶ 입력 모드
   ▲                          │
   └────────(Esc)─────────────┘
   │
   └──( : )──▶ 명령행 모드 ──(Enter)──▶ 명령 모드

1. 모드 전환

명령설명
Esc어느 모드에서든 명령 모드로 돌아감
:명령행 모드로 진입 (파일 저장, 종료, 치환 등)

2. 파일 열기 / 저장 / 종료

명령설명
vi 파일명지정한 파일을 열기(없으면 새로 생성)
vi +n 파일명n번째 줄로 커서를 이동한 상태로 열기
vi + 파일명파일의 마지막 줄로 이동한 상태로 열기
:w저장
:w 파일명다른 이름으로 저장
:q종료 (변경 사항 없을 때)
:q!강제 종료 (변경 사항 무시)
:wq 또는 :x저장 후 종료
ZZ저장 후 종료 (명령 모드에서 바로 입력)

3. 입력 모드 진입 명령

명령설명
i현재 커서 앞에서 입력 시작 (insert)
I현재 줄의 맨 앞에서 입력 시작
a현재 커서 뒤에서 입력 시작 (append)
A현재 줄의 맨 끝에서 입력 시작
o현재 줄 아래에 새 줄을 열어 입력 시작 (open)
O현재 줄 위에 새 줄을 열어 입력 시작
R덮어쓰기 모드로 입력 시작 (replace)

4. 커서 이동

문자/줄 단위

명령설명
h / 왼쪽으로 한 칸 이동
j / 아래로 한 줄 이동
k / 위로 한 줄 이동
l / 오른쪽으로 한 칸 이동
0현재 줄의 맨 앞으로 이동
^현재 줄의 첫 번째 (공백 아닌) 문자로 이동
$현재 줄의 맨 끝으로 이동

단어 단위

명령설명
w다음 단어의 시작으로 이동
W다음 단어의 시작으로 이동 (구두점 무시, 공백 기준)
b이전 단어의 시작으로 이동
B이전 단어의 시작으로 이동 (구두점 무시)
e다음 단어의 끝으로 이동
E다음 단어의 끝으로 이동 (구두점 무시)

화면/문서 단위

명령설명
H화면 맨 위 줄로 이동
M화면 중간 줄로 이동
L화면 맨 아래 줄로 이동
Ctrl+f한 화면 아래로 스크롤 (page down)
Ctrl+b한 화면 위로 스크롤 (page up)
Ctrl+d반 화면 아래로 스크롤
Ctrl+u반 화면 위로 스크롤
gg문서 맨 처음으로 이동
G문서 맨 끝으로 이동
nG 또는 :nn번째 줄로 이동

5. 삭제 (delete)

명령설명
x커서 위치의 문자 삭제
X커서 앞의 문자 삭제
dd현재 줄 삭제
ndd현재 줄부터 n줄 삭제
dw커서 위치부터 단어 끝까지 삭제
d$ 또는 D커서 위치부터 줄 끝까지 삭제
d0커서 위치부터 줄 처음까지 삭제
dG커서 위치부터 문서 끝까지 삭제
dgg커서 위치부터 문서 처음까지 삭제

6. 복사(yank) / 붙여넣기(put)

명령설명
yy 또는 Y현재 줄 복사
nyy현재 줄부터 n줄 복사
yw커서 위치부터 단어 끝까지 복사
y$커서 위치부터 줄 끝까지 복사
p복사(또는 삭제)한 내용을 커서 다음(아래)에 붙여넣기
P복사(또는 삭제)한 내용을 커서 앞(위)에 붙여넣기

7. 되돌리기 / 반복

명령설명
u마지막 작업 취소 (undo)
Ctrl+r취소한 작업 다시 실행 (redo)
.마지막 명령 반복

8. 치환(Replace) / 변경(Change)

명령설명
r문자커서 위치의 한 문자를 지정한 문자로 치환
R덮어쓰기 모드로 전환하여 연속 치환 (Esc로 종료)
cw커서 위치부터 단어 끝까지 변경(삭제 후 입력 모드 진입)
cc현재 줄 전체 변경
C커서 위치부터 줄 끝까지 변경
~커서 위치 문자의 대소문자 전환

9. 검색 및 치환

명령설명
/문자열아래 방향으로 문자열 검색
?문자열위 방향으로 문자열 검색
n같은 방향으로 다음 검색 결과로 이동
N반대 방향으로 다음 검색 결과로 이동
:s/old/new현재 줄에서 첫 번째 old를 new로 치환
:s/old/new/g현재 줄에서 모든 old를 new로 치환
:%s/old/new/g문서 전체에서 모든 old를 new로 치환
:%s/old/new/gc문서 전체 치환 시 매번 확인(confirm) 요청
:n1,n2s/old/new/gn1~n2번째 줄 범위에서 치환

10. 블록/여러 줄 작업

명령설명
v문자 단위 비주얼(선택) 모드 시작
V줄 단위 비주얼 모드 시작
Ctrl+v블록(사각형) 단위 비주얼 모드 시작
:n1,n2co n3n1~n2번째 줄을 n3번째 줄 다음에 복사
:n1,n2m n3n1~n2번째 줄을 n3번째 줄 다음으로 이동
:n1,n2dn1~n2번째 줄 삭제

11. 기타 유용한 명령

명령설명
:set nu줄 번호 표시
:set nonu줄 번호 숨김
:set ic검색 시 대소문자 구분 안 함
J현재 줄과 다음 줄을 합침
Ctrl+g현재 파일명과 커서 위치(줄 번호 등) 표시
:r 파일명커서 위치에 다른 파일 내용 삽입
:e 파일명다른 파일 열기
%대응하는 괄호( (){}[] )로 이동

12. 명령 반복 사용법

대부분의 이동/삭제/복사 명령 앞에 숫자를 붙이면 그 횟수만큼 반복됩니다.

3dd   → 3줄 삭제
5j    → 5줄 아래로 이동
10yy  → 10줄 복사
2w    → 단어 2개만큼 이동

참고: 빠르게 외우면 좋은 조합

상황명령
한 줄 삭제 후 다른 곳에 붙이기dd → 이동 → p
한 줄 복사해서 여러 곳에 붙이기yy → 이동 → p (반복 가능)
오타 한 글자만 고치기r문자
단어만 바꿔치기cw → 새 단어 입력 → Esc
전체 치환:%s/old/new/g
저장하고 나가기:wq 또는 ZZ

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤