vi 명령어를 자꾸 까먹어서 까먹지 않기 위해 정리한다. 아래 명령어 목록은 참고 링크를 기반으로 개인적으로 알고 있는 명령어 및 수정한 내용까지 모두 포함한 목록이다.
참고 링크: 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/ |
현재 행의 str을 rep로 대체 |
:1,. s/str/rep/ |
1행부터 현재 행의 str을 rep로 대체 |
:% s/str/rep/g |
파일 전체의 str을 rep로 대체 |
:,$ s/str/rep/ |
현재 커서 위치부터 파일 끝까지 모든 str을 rep로 대체 |
: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! |
변경사항 무시하고 처음 열었던 상태로 변경 |
관련 글