| 키 | 설명 |
|---|---|
i | 현재 커서 왼쪽에 삽입 |
a | 현재 커서 오른쪽에 삽입 |
o | 현재 커서 아랫줄에 삽입 |
I | 현재 줄의 맨 앞에 삽입 |
A | 현재 줄의 맨 뒤에 삽입 |
O | 현재 줄의 윗줄에 삽입 |
s | 현재 문자를 지우고 삽입 |
S | 현재 줄을 지우고 삽입 |
Esc | 명령 모드로 전환 |
| 키 | 설명 |
|---|---|
yy, Y | 현재 줄 복사 (yank) |
p | 복사한 줄을 아래에 붙여넣기 |
P | 복사한 줄을 위에 붙여넣기 |
| 키 | 설명 |
|---|---|
x | 현재 커서 위치 문자 삭제 |
dd | 현재 줄 삭제 |
| 키 / 명령어 | 설명 |
|---|---|
u | undo (이전 명령 취소) |
/문자 | 문자를 검색 |
/문자는 n(아래방향), N(윗 방향) 키를 입력해 다음 문자로 넘어간다.
| 명령어 | 설명 |
|---|---|
:w | 저장 |
:q | 종료 |
:wq! | 강제 저장 후 종료 (읽기 전용 포함) |
| 명령어 | 설명 |
|---|---|
:e 파일명 | 새 파일 열기 |
:r 파일명 | 현재 위치에 외부 파일 내용 삽입 |
| 명령어 | 설명 |
|---|---|
:숫자 | 해당 줄로 이동 |
:$ | 마지막 줄로 이동 |
| 명령어 | 설명 |
|---|---|
:n 파일명 | 현재 파일 종료 후 다른 파일 열기 |
:n# | 직전에 편집하던 파일로 돌아가기 |
| 명령어 | 설명 |
|---|---|
:!bash | bash 셸 잠깐 실행 → exit 하면 vi로 복귀 |
주로 아래의 경우에 사용된다.
- 파일 편집 중 디렉토리 구조 확인하고 싶을 때
- 외부 파일 내용을 cat, less로 보고 싶을 때
- 간단한 명령어로 결과 확인하고 다시 돌아올 때
한 번만 간단하게 확인하고 싶을 때는 :!ls -l 식으로 사용하는 것도 가능하다.

| 기호 | 의미 |
|---|---|
. | 현재 줄 |
n+m | n번째 줄부터 m줄 더한 위치 |
$ | 마지막 줄 |
n,m | n번째 줄부터 m번째 줄까지 |
% | 전체 줄 (1,$) |
^ | 줄의 시작 |
\ | 특수 기능 제거 |
\<, \> | 단어의 시작과 끝 |
| 명령어 | 설명 |
|---|---|
:s/문자/새문자 | 현재 줄 첫 번째 일치 항목만 변경 |
:s/문자/새문자/g | 현재 줄 전체 변경 |
:s/문자/새문자/gi | 대소문자 무시 후 현재 줄 전체 변경 |
:s/문자/새문자/gc | 변경 전 확인(prompt) 후 적용 |
-> 모든 love가 llll로 변경
-> 대소문자를 무시한 모든 love가 aaaa로 변경
-> 현재 커서의 위치부터 +3번째 줄 까지의 대소문자를 무시한 모든 love가 [change]로 변경
-> 줄 시작이 love인 모든 love를 lalala로 변경
-> 정확히 love라는 단어가 들어가는 부분만 cccc로 변경
-> & \& : 첫번째 &는 love를 의미| 설정 | 설명 |
|---|---|
set number | 줄 번호 표시 |
set ai | 자동 들여쓰기 (auto indent) |
set sm | 괄호 짝 표시 (show match) |
set ic | 검색 시 대소문자 무시 |
set list | 탭, 스페이스 등을 표시 |
syntax off | 색상 강조 끄기 |


| 명령 | 설명 |
|---|---|
ab, unab | 약어 등록 / 해제 |
map, unmap | 단축키 매핑 / 해제 |
:ab [약어] [문자] 식으로 구성:ab를 통해 현재 생성 된 약어 확인:una [약어]를 통해 약어 삭제:map [키] [기능] 식으로 구성map를 통해 설정 된 단축키 확인unmpa [키]를 통해 단축어 삭제