모드 | 단축키 | 기능 설명 |
---|---|---|
일반 모드 | i | 현재 커서 위치에서 입력 모드로 전환 |
I | 줄의 맨 앞에서 입력 모드로 전환 | |
a | 커서 다음 위치에서 입력 모드로 전환 | |
A | 줄의 끝에서 입력 모드로 전환 | |
o | 다음 줄에 새로운 줄을 생성하고 입력 모드로 전환 | |
O | 이전 줄에 새로운 줄을 생성하고 입력 모드로 전환 | |
Esc | 입력 모드에서 일반 모드로 전환 | |
x | 현재 커서 위치의 문자 삭제 | |
dd | 현재 줄 삭제 | |
yy | 현재 줄 복사 | |
p | 복사한 줄 또는 문자 붙여넣기 | |
u | 마지막 명령 취소 | |
Ctrl + r | 마지막 취소 명령 복원 | |
G | 파일의 마지막 줄로 이동 | |
gg | 파일의 첫 줄로 이동 | |
h , j , k , l | 각각 왼쪽, 아래, 위, 오른쪽으로 이동 | |
Ctrl + f | 다음 페이지로 이동 | |
Ctrl + b | 이전 페이지로 이동 | |
H | 화면의 맨 위로 커서 이동 | |
M | 화면의 중간으로 커서 이동 | |
L | 화면의 맨 아래로 커서 이동 | |
Ctrl + e | 한 줄 아래로 화면 스크롤 | |
Ctrl + y | 한 줄 위로 화면 스크롤 | |
:number | 특정 줄 번호로 이동 | |
0 | 현재 줄의 맨 앞으로 이동 | |
$ | 현재 줄의 맨 끝으로 이동 | |
w | 다음 단어의 시작으로 이동 | |
b | 이전 단어의 시작으로 이동 | |
e | 단어의 끝으로 이동 | |
% | 괄호 쌍 사이 이동 (예: ( , { , [ ) | |
* | 현재 단어와 동일한 단어 검색 | |
# | 현재 단어와 동일한 단어 이전 위치로 검색 | |
일반 모드 | g | 확장 명령어 사용 시작 |
gU | 선택한 텍스트를 대문자로 변환 | |
gu | 선택한 텍스트를 소문자로 변환 | |
dG | 현재 줄부터 파일 끝까지 삭제 | |
yG | 현재 줄부터 파일 끝까지 복사 | |
g* | 현재 단어와 동일한 단어 파일 내에서 검색 | |
g# | 현재 단어와 동일한 단어 이전 위치로 검색 | |
Ctrl + g | 현재 파일명, 줄 번호, 위치 정보 표시 | |
gd | 현재 함수 정의로 이동 | |
입력 모드 | Ctrl + h | 커서 왼쪽의 문자 삭제 |
Ctrl + w | 커서 왼쪽의 단어 삭제 | |
Ctrl + u | 커서부터 줄 시작까지 삭제 | |
비주얼 모드 | v | 비주얼 모드로 전환 (문자 단위 선택) |
V | 라인 단위로 비주얼 모드 전환 | |
y | 선택한 텍스트 복사 | |
d | 선택한 텍스트 삭제 | |
> | 선택한 텍스트 들여쓰기 | |
< | 선택한 텍스트 내어쓰기 | |
gv | 마지막으로 선택한 영역 다시 선택 | |
U | 선택 영역 대문자로 변경 | |
u | 선택 영역 소문자로 변경 | |
:s/old/new/g | 선택한 영역 내에서 old를 new로 변경 | |
명령 모드 | : | 명령 입력 시작 |
:w | 파일 저장 | |
:q | 편집기 종료 | |
:wq | 저장 후 종료 | |
:q! | 저장하지 않고 강제 종료 | |
:set nu | 줄 번호 표시 | |
:set nonu | 줄 번호 숨기기 | |
/단어 | 단어 검색 | |
n | 검색된 단어의 다음 위치로 이동 | |
N | 검색된 단어의 이전 위치로 이동 | |
:r <filename> | 현재 파일에 다른 파일 내용 읽어오기 | |
:!<command> | vi에서 나가지 않고 외부 명령어 실행 | |
:g/pattern/d | 패턴에 맞는 줄을 모두 삭제 | |
:set ic | 대소문자 구분 없이 검색 | |
:set noic | 대소문자 구분 검색 | |
:history | 명령어 히스토리 확인 | |
:s/foo/bar/gc | 현재 줄에서 foo를 bar로 모두 변경, 변경 전 확인 | |
편집 및 삭제 | c | 선택한 텍스트 변경 (delete 후 insert) |
ciw | 현재 단어 변경 | |
cw | 현재 단어의 나머지 부분 변경 | |
r | 한 글자 대체 | |
R | 덮어쓰기 모드 시작 | |
J | 아래 줄과 현재 줄 결합 | |
~ | 문자 대소문자 변경 | |
고급 편집 | >> | 현재 줄을 오른쪽으로 들여쓰기 |
<< | 현재 줄을 왼쪽으로 내어쓰기 | |
5dd | 5줄 삭제 | |
5yy | 5줄 복사 | |
10G | 10번째 줄로 이동 | |
=G | 현재 줄부터 파일 끝까지 자동 들여쓰기 적용 | |
m[a-z] | 북마크 설정 (a-z 까지 선택 가능) | |
'[a-z] | 지정한 북마크로 이동 | |
Ctrl + o | 이전 위치로 돌아가기 | |
Ctrl + i | 다음 위치로 이동 | |
저장 및 종료 | :x | 저장 후 종료 |
ZZ | 저장하고 종료 (일반 모드에서 Shift + Z 두 번) | |
ZQ | 저장하지 않고 종료 (일반 모드에서 Shift + Q 두 번) | |
검색 및 치환 | :%s/foo/bar/g | 파일 전체에서 foo를 bar로 모두 변경 |
:%s/foo/bar/gc | 파일 전체에서 foo를 bar로 변경, 변경 전 확인 | |
:10,20s/foo/bar/g | 10번 줄부터 20번 줄까지 foo를 bar로 변경 | |
:noh | 하이라이트된 검색 결과 지우기 | |
:vimgrep /pattern/ | 파일 내에서 패턴 검색 (검색 결과 목록에 추가) | |
:copen | quickfix 창 열기 (vimgrep 결과 확인 가능) | |
cw | 단어 교체 시작 (커서 위치의 단어를 바꿀 수 있는 명령어) | |
:tabe <filename> | 새 탭에서 파일 열기 | |
복사, 붙여넣기 | "+y | 시스템 클립보드에 복사 ("+p 로 클립보드에서 붙여넣기) |
"*y | 선택된 텍스트를 클립보드로 복사 ("*p 로 붙여넣기) | |
P | 커서 앞에 붙여넣기 | |
gp | 붙여넣기 후 커서를 붙여넣은 텍스트 끝으로 이동 | |
창 관리 | :split | 가로로 창 분할 |
:vsplit | 세로로 창 분할 | |
Ctrl + w + w | 다음 창으로 이동 | |
Ctrl + w + h | 왼쪽 창으로 이동 | |
Ctrl + w + j | 아래쪽 창으로 이동 | |
Ctrl + w + k | 위쪽 창으로 이동 | |
Ctrl + w + l | 오른쪽 창으로 이동 | |
:close | 현재 창 닫기 | |
:only | 현재 창을 제외한 나머지 닫기 | |
:tabnew <filename> | 새 탭 열기 | |
gt | 다음 탭으로 이동 | |
gT | 이전 탭으로 이동 | |
파일 관리 | :e <filename> | 파일 열기 |
:w <filename> | 다른 이름으로 저장 | |
:r !ls | 현재 파일에 디렉토리 목록 삽입 | |
:e# | 이전 파일로 돌아가기 | |
:bd | 버퍼 닫기 | |
:ls | 버퍼 목록 표시 | |
:b <number> | 번호에 해당하는 버퍼로 이동 | |
매크로 사용 | q[a-z] | 매크로 기록 시작 (a-z 까지 이름 지정 가능) |
q | 매크로 기록 종료 | |
@[a-z] | 지정한 매크로 실행 (@a , @b 등) | |
@@ | 마지막 매크로 반복 실행 |
명령어 | 설명 |
---|---|
:set nu | 줄 번호를 표시합니다. |
:set nonu | 줄 번호를 숨깁니다. |
:set autoindent | 자동으로 들여쓰기를 설정합니다. |
:set noautoindent | 자동 들여쓰기를 해제합니다. |
:set shiftwidth=4 | 들여쓰기에 사용할 공백의 개수를 4로 설정합니다. |
:set tabstop=4 | 탭을 4칸 공백으로 표시합니다. |
:set expandtab | 탭 입력 시 공백으로 변환합니다. |
:set noexpandtab | 탭 입력 시 실제 탭 문자를 사용합니다. |
:set wrap | 화면에 맞게 텍스트 줄바꿈을 설정합니다. |
:set nowrap | 텍스트 줄바꿈을 해제하여 한 줄로 표시합니다. |
:set ruler | 상태 표시줄에 현재 커서의 위치(줄과 열)를 표시합니다. |
:set noruler | 상태 표시줄에서 커서 위치 표시를 숨깁니다. |
:set hlsearch | 검색어를 하이라이트로 표시합니다. |
:set nohlsearch | 검색어 하이라이트를 해제합니다. |
:set ignorecase | 검색 시 대소문자를 구분하지 않습니다. |
:set noignorecase | 검색 시 대소문자를 구분합니다. |
:set incsearch | 검색 시 입력할 때마다 즉시 일치 항목을 표시합니다. |
:set noincsearch | 실시간 검색을 해제합니다. |
:set smartcase | 검색어에 대문자가 포함된 경우 대소문자를 구분하여 검색합니다. |
:set nosmartcase | 대소문자 구분 검색을 해제합니다. |
:set cursorline | 현재 커서가 있는 줄을 하이라이트로 표시합니다. |
:set nocursorline | 현재 줄 하이라이트를 해제합니다. |
:set cursorcolumn | 현재 커서가 있는 열을 하이라이트로 표시합니다. |
:set nocursorcolumn | 현재 열 하이라이트를 해제합니다. |
:set numberwidth=4 | 줄 번호 표시를 위한 너비를 4로 설정합니다. |
:set background=dark | 어두운 배경에 맞춰 색상을 조정합니다. |
:set background=light | 밝은 배경에 맞춰 색상을 조정합니다. |
:set showcmd | 하단에 입력 중인 명령어를 표시합니다. |
:set noshowcmd | 입력 중인 명령어 표시를 해제합니다. |
:set showmode | 현재 모드(입력 모드, 명령 모드 등)를 화면에 표시합니다. |
:set noshowmode | 모드 표시를 해제합니다. |
:set list | 공백이나 탭, 줄바꿈 등을 기호로 표시합니다. |
:set nolist | 공백 등의 기호 표시를 해제합니다. |
:set listchars=tab:>-,trail:- | 탭을 > 로, 끝 공백을 - 로 표시합니다. |
:set scrolloff=3 | 커서가 화면 상단 또는 하단에 닿기 전 3줄의 여유를 둡니다. |
:set sidescrolloff=3 | 커서가 화면 좌우 끝에 닿기 전 3열의 여유를 둡니다. |
:set splitbelow | 새 가로 분할 창을 아래쪽에 엽니다. |
:set nosplitbelow | 새 가로 분할 창을 위쪽에 엽니다. |
:set splitright | 새 세로 분할 창을 오른쪽에 엽니다. |
:set nosplitright | 새 세로 분할 창을 왼쪽에 엽니다. |
:set wildmenu | 명령어 자동 완성 시 옵션 목록을 표시합니다. |
:set nowildmenu | 자동 완성 목록 표시를 해제합니다. |
:set backup | 파일 백업을 활성화하여 편집 전 원본을 저장합니다. |
:set nobackup | 백업 파일 생성을 비활성화합니다. |
:set undofile | 되돌리기 기록을 파일로 저장하여 닫았다 열어도 되돌리기가 가능하게 합니다. |
:set noundofile | 되돌리기 파일 저장을 비활성화합니다. |
:set autoread | 파일이 외부에서 변경되면 자동으로 다시 읽어옵니다. |
:set noautoread | 외부 변경 시 자동 읽어오기를 비활성화합니다. |
:set lazyredraw | 매크로나 스크립트 실행 시 화면 리프레시를 지연하여 성능을 향상시킵니다. |
:set nolazyredraw | 화면 리프레시 지연을 비활성화합니다. |
:set backspace=indent,eol,start | 백스페이스가 들여쓰기, 줄 끝, 줄 시작에서 작동하게 설정합니다. |
:set wrapmargin=2 | 오른쪽 끝에서 2글자 앞에서 자동으로 줄바꿈합니다. |
:set smartindent | 자동 들여쓰기 설정을 스마트 모드로 활성화합니다. |
:set nosmartindent | 스마트 자동 들여쓰기를 비활성화합니다. |
:set viminfo='20,<100 | 20개의 이전 명령과 100줄의 이전 내용 기억 |
명령어 | 설명 |
---|---|
i | 현재 커서 위치에서 입력 모드로 전환 |
I | 줄의 맨 앞에서 입력 모드로 전환 |
a | 커서의 다음 위치에서 입력 모드로 전환 |
A | 줄의 끝에서 입력 모드로 전환 |
o | 현재 줄의 아래쪽에 새 줄을 삽입하고 입력 모드로 전환 |
O | 현재 줄의 위쪽에 새 줄을 삽입하고 입력 모드로 전환 |
r | 현재 커서 위치의 한 글자를 다른 문자로 교체 (입력한 문자로 대체) |
R | 덮어쓰기 모드로 전환하여 입력 (현재 위치부터 기존 텍스트를 덮어씌움) |
s | 현재 커서 위치의 한 글자를 삭제하고 입력 모드로 전환 |
S | 현재 줄 전체를 삭제하고 입력 모드로 전환 (cc 와 동일) |
c | 선택한 범위의 텍스트를 삭제 후 입력 모드로 전환 (d 와 입력 모드 결합) |
cc | 현재 줄 전체를 삭제하고 입력 모드로 전환 (S 와 동일) |
cw | 현재 단어의 남은 부분을 삭제하고 입력 모드로 전환 |
c$ | 커서 위치부터 줄 끝까지 삭제하고 입력 모드로 전환 |
c0 | 커서 위치부터 줄 시작까지 삭제하고 입력 모드로 전환 |
ciw | 현재 단어 전체를 삭제하고 입력 모드로 전환 (iw 는 "inner word"를 의미) |
ci" | 큰따옴표 안의 내용을 삭제하고 입력 모드로 전환 (ci' 로 작은따옴표 내부도 가능) |
d | 삭제 명령어로, 선택한 영역의 텍스트를 삭제 (dd , dw 등과 결합하여 사용) |
dd | 현재 줄을 삭제 (다음 줄로 이동) |
D | 커서 위치부터 줄 끝까지 삭제 |
dw | 단어 끝까지 삭제 (커서가 단어의 시작에 위치할 때) |
x | 현재 커서 위치의 한 글자를 삭제 |
X | 현재 커서 위치의 앞쪽 한 글자를 삭제 |
diw | 현재 단어 전체를 삭제 (d + iw 의 결합) |
daw | 현재 단어를 포함한 공백까지 삭제 (d + aw 로 단어와 주변 공백까지 삭제) |
dG | 현재 줄부터 파일 끝까지 삭제 |
dgg | 현재 줄부터 파일 시작까지 삭제 |
C | 커서 위치부터 줄 끝까지 삭제 후 입력 모드로 전환 (동작 방식은 c$ 와 동일) |
J | 현재 줄과 아래 줄을 결합 |
p | 삭제 또는 복사한 텍스트를 커서 다음 위치에 붙여넣기 (dd 로 삭제한 줄을 붙일 때 유용) |
P | 삭제 또는 복사한 텍스트를 커서 앞 위치에 붙여넣기 |
u | 마지막 작업을 취소 (Undo) |
Ctrl + r | 마지막 취소 작업을 다시 실행 (Redo) |
. | 가장 최근에 실행한 명령어를 반복 |