Skip to content

vi 명령어를 자꾸 까먹어서 까먹지 않기 위해 정리한다. 아래 명령어 목록은 참고 링크를 기반으로 개인적으로 알고 있는 명령어 및 수정한 내용까지 모두 포함한 목록이다.

vi 시작 명령어 작업 설명
vi filename 파일 열기, 작성
vi +18 filename 18행으로 파일 열기
vi +/"str" filename "str"의 처음 나오는 행에서 열기
vi -r filename 손상된 파일 회복
view filename 읽기 전용으로 파일 열기
커서 이동 명령어 작업 설명
h (←) 왼쪽으로 커서 이동
j (↓) 아래로 커서 이동
k (↑) 위로 커서 이동
l (→) 오른쪽으로 커서 이동
w 오른쪽 한 단어의 끝 부분으로 커서 이동
e 오른쪽 한 단어의 앞 부분으로 커서 이동
b 왼쪽 한 단어의 앞 부분으로 커서 이동
Enter 한 행 아래로 커서 이동
Backspace 한 문자 왼쪽으로 커서 이동
Space Bar 한 문자 오른쪽으로 커서 이동
^ 또는 0(숫자 0) 행의 처음으로 커서 이동
$ 행의 마지막으로 커서 이동
H 화면의 맨 위로 커서 이동
M 화면의 중간으로 커서 이동
L 화면이 맨 아래로 커서 이동
숫자G 숫자행으로 커서 이동
Ctrl + f 한 화면 위로 커서 이동
Ctrl + b 한 화면 아래로 커서 이동
Ctrl + d 반 화면 위로 커서 이동
Ctrl + u 반 화면 아래로 커서 이동
Ctrl + e 한 줄씩 위로 커서 이동
Ctrl + y 한 줄씩 아래로 커서 이동
G 파일의 마지막 행으로 이동
21G 파일의 21번째 행으로 이동
Ctrl + G 파일의 line 수 확인
 문자, 행, 삽입 명령어 작업 설명
a     (종료 : ESC) 커서 오른쪽에 문자 삽입
A     (종료 : ESC) 커서 오른쪽, 행의 끝에 문자 삽입
i     (종료 : ESC) 커서 왼쪽에 문자 삽입
I     (종료 : ESC) 커서 왼쪽, 행의 처음에 문자 삽입
o     (종료 : ESC) 커서 아래에 행 삽입
O     (종료 : ESC) 커서 위에 행 삽입
 텍스트 변경 명령어 작업 설명
cw    (종료 : ESC) 단어 변경
cc    (종료 : ESC) 행 변경
C     (종료 : ESC) 커서 오른쪽의 행 변경
s     (종료 : ESC) 커서가 위치한 문자열 대체
S     (종료 : ESC) 커서가 위치한 라인의 문자열 대체
r 커서 위치 문자를 다른 문자로 대체
r-Enter 행 분리
J 현재 행과 아래 행 결합
xp 커서 위치 문자와 오른쪽 문자 교환
~ 문자형(대소문자) 변경
u 이전 명령 취소
U 행 변경사항 취소
:u 이전의 최종 행 취소
. 이전 최종 명령 반복
텍스트 삭제 명령어 작업 설명
x 커서가 있는 문자 삭제
5x 커서가 있는 위치부터 5개의 문자 삭제
dw 현재 커서가 있는 한 단어 삭제
dd 커서가 있는 라인 삭제
5dd 커서가 있는 라인부터 5개의 라인 삭제
db 커서 위치에서 꺼꾸로 한 단어 삭제
D 커서 오른쪽 행 삭제
:5,10 d 5~10번째 행 삭제
복사 및 이동 명령어 작업 설명
yy 행 복사
Y 행 복사
yG 현재 커서 위치에서 파일 끝까지 복사
P 복사되거나 삭제된 행을 현재 행 위에 삽입
p 복사되거나 삭제된 행을 현재 행 아래에 삽입
:1,2 co 3 1~2행을 복사하여 3행 다음에 삽입
:4,5 m 6 4~5행을 6행 다음으로 이동 (단, 1행으로 이동하려면 :4,5 m 0 이라고 입력 필요)
:1,100 w filename 1~100행을 filename에 저장
행 번호 설정 명령어 작업 설명
:set nu 행 번호 표시
:set nonu 행 번호 숨기기
탐색 및 대체 명령어 작업 설명
/str (특수 문자 시 \ 입력 필요, e.g., /\(str\)) 현재 커서 위치에서 아래 방향으로 str 검색
?str (특수 문자 시 \ 입력 필요, e.g., /\(str\)) 현재 커서 위치에서 위 방향으로 str 검색
n 다음 문자열 검색
N 이전 문자열 검색
:g/str/s//rep/gc str 검색 후 rep로 대체할지 여부를 확인
:s/str/rep/ 현재 행의 strrep로 대체
:1,. s/str/rep/ 1행부터 현재  행의 strrep로 대체
:% s/str/rep/g 파일 전체의 strrep로 대체
:,$ s/str/rep/ 현재 커서 위치부터 파일 끝까지 모든 strrep로 대체
:10,100 s/^/\/\//g 10~100행까지 주석 처리
:10,100 s/^\/\///g 10~100행까지 주석 해제
1. Ctrl + v 로 원하는 만큼 블록 지정
2. I (Shift + i)
3. // 입력
4. ESC 2번 타이핑
Vim에서 블록 활용 주석 처리 (세로 방향)
1. Ctrl + v 로 원하는 만큼 블록 지정
2. x
Vim에서 블록 활용 주석 해제 (세로 방향)
v 현재 커서가 위치한 행 주석 지정 준비, 이후 이동 키로 문자 단위 블록 지정
V 줄 단위 블록 지정 또는 해제
VG 현재 커서가 위치한 행부터 마지막 행까지 블록 지정
:noh 블록 지정으로 highlight된 부분 해제
>> 현재 커서가 위치한 행 맨 앞에 삽입
숫자>> 현재 커서가 위치한 행부터 아래로 숫자번째 행까지 맨 앞에 삽입
<< 현재 커서가 위치한 행 맨 앞에 삭제
숫자<< 현재 커서가 위치한 행부터 아래로 '숫자'번째 행까지 맨 앞에 삭제
블록 지정 + = 지정된 블록에 자동으로 indent 적용 (C/C++ 코딩 등)
gg=G 파일 전체에 indent 적용 (C/C++ 코딩 등)
파일 명령어 작업 설명
:r filename 현재 커서 다음 행에 filename 삽입
: 34 r filename 34행 다음 행에 filename 삽입
저장 및 종료 명령어 작업 설명
:w 저장
:w filename filename에 저장
:wq 저장 후 vi 종료
ZZ (대문자) 저장 후 vi 종료
:q! 변경사항 무시하고 종료
:q 변경사항 없을 때 단순 종료
:e! 변경사항 무시하고 처음 열었던 상태로 변경