Vim 명령어 치트시트
Vim / Neovim 빠른 참조: 모드, 커서 이동, 편집, 검색 & 치환, 다중 파일 탐색, 레지스터 / 매크로, 비주얼 블록 편집 — 가장 흔한 동작의 짧은 예시까지 정리했습니다.
명령어 37개
모드 & 저장
:w / :q / :wq / :q!저장, 종료, 저장 후 종료, 저장하지 않고 강제 종료.
:w file (다른 이름으로 저장); :w! (강제); :x (수정 시에만 저장 & 종료); :qa! 모두 강제 종료; :wqa
:w | :q or ZZi / a / o / I / A / O삽입 모드 진입: i 커서 앞 / a 커서 뒤; o / O 아래/위 새 줄; I/A 행의 시작/끝.
i edit here => o new line + insert => I line-beginning => A line-end<Esc> / Ctrl-[일반(Normal) 모드로 돌아갑니다(Ctrl-c / Ctrl-[ 도 사용). 보류 중인 연산자를 취소합니다.
i Hello<Esc> ; then :w커서 이동
h / j / k / l한 글자 좌 / 하 / 상 / 우 이동. (방향키도 동작합니다.)
5j — move 5 lines downw / b / e / W / B / E단어 단위로 이동(구두점과 공백을 구분); W/B/E 는 공백 구분 단어.
wdw ; 3W to third whitespace-word forward0 / $ / ^행의 시작 / 행의 끝 / 첫 비공백 문자.
0 to start ; $ to end ; ^ to first non-blankgg / G / :N첫 줄 / 마지막 줄 / N 행으로 점프. 비율(50%) 로 이동도 가능.
gg=G format the entire file (with =)H / M / L / Ctrl-d / Ctrl-u화면의 위 / 중간 / 아래(H/M/L); 반 페이지 아래(Ctrl-d) / 위(Ctrl-u).
Ctrl-d and Ctrl-u to scan; 10Ctrl-f full page forward{ / } / ( / )문단(중괄호) 또는 문장(괄호, ASCII 텍스트) 단위로 점프.
5{ ; 2} to jump two paragraphs forwardf<char> / F<char> / t / T ; ; / ,현재 행에서 다음 문자를 찾기(f) / 역방향(F); ; / , 로 반복. t/T 는 직전에서 멈춤.
f, brings the cursor to the next comma ; df, deletes through next comma삽입 모드
Ctrl-h / Ctrl-w / Ctrl-u입력 중 백스페이스 / 단어 삭제 / 행 삭제 — 코드용 vim 을 인체공학적으로 만듭니다.
i hello world<Ctrl-w> leaves 'hello 'Ctrl-o <cmd> / Ctrl-r <reg>일반 모드 명령을 한 번 실행(Ctrl-o); 삽입 모드에서 레지스터를 붙여넣기(Ctrl-r).
Ctrl-r =expr 로 표현식을 즉석에서 평가
Ctrl-r " the unnamed register ; Ctrl-r 0 from the yank register ; Ctrl-r =5+5 to insert 10편집 연산자
d / x / X / c삭제 / 커서 아래 글자 삭제 / 커서 앞 글자 삭제 / 변경(삭제 + 삽입). 이동과 결합: dw/xp/c$.
dd 행 삭제; cc 행 변경; D 줄 끝까지 삭제; C 줄 끝까지 변경
dw | dw$ | dw | 3dd | C reformat current liney / yy / Y얀크(복사). yy / Y 는 현재 행을 얀크; y$ / yW 등은 이동을 받음.
y2w yy p gp — yank 2 words, line, paste, paste below without moving cursorp / P / gp / gP커서 뒤(p) / 앞(P) 에 붙여넣기. gp/gP 는 커서를 붙여넣은 텍스트 끝에 둡니다.
p below current ; P above ; gp after, cursor at endu / Ctrl-r / U실행 취소 / 다시 실행(Ctrl-r). U 는 행을 원래 상태로 복구(반복 가능한 카운트 권장).
u u u ; Ctrl-r Ctrl-r ; 5u to undo last 5 changes. / @: / q:마지막 편집 반복(.) — 매우 강력. @: 는 최근 매크로 반복; q: 는 명령 히스토리를 엽니다.
i Monday<Esc> ; then . . . . across several linesr / R / J / gq한 글자 치환(r<char>) / 치환 모드(R) / 행 결합(J, gJ 는 공백 없이) / 서식(gq{이동}).
raZ to change one char ; J to join ; gqap format the current paragraph들여쓰기
>> / << / = / :set autoindent들여쓰기 / 내어쓰기 / 자동 들여쓰기(=). 이동과 결합: =G 는 끝까지; `gg=G` 는 전체 서식.
5>> indent 5 lines ; =ap auto-indent paragraph ; gg=G format buffer (whole file)검색 & 치환
/pat / ?pat / n / N앞으로(/) / 뒤로(?) 검색; n / N 은 같은 / 반대 방향으로 반복.
/\<word\> 단어 경계; \v very-magic regex; \c 대소문자 무시; \C 대소문자 구분
/TODO\c ; n next ; N previous ; * / # to search the word under cursor* / # / g* / g#커서 아래 단어를 검색: * 앞으로(# 뒤로). g* 는 인접 경계도 포함.
Hover on foo then * — jumps to next foo, n continues:%s/pat/rep/g / :5,12s/foo/bar/g치환 — 전역, 범위, 플래그, 매치마다 확인 가능.
%s / g 전역; /c 확인; /i 대소문자 무시; /I 대소문자 구분; /e 에러 무시; /n 개수만
:%s/\bfoo\b/bar/gc — replace whole word "foo" with "bar", confirm each:g/pat/d / :v/pat/m$매치에 대해 연산: :g/pat/d 매치 행 삭제; :v/pat/m$ 비매치 행을 끝으로 이동.
:v/^#\|^$/d delete all comment-blank only lines버퍼, 탭, 윈도우
:e file / :b<N> / :bn :bp :ls다른 파일 열기(:e), 목록(`:ls`), ID 로 버퍼 이동(`:b 3`), 다음/이전(`:bn`/`bp`).
:e . 파일 탐색기; :bd 현재 버퍼 삭제; :bn! 강제; hidden
:e src/index.ts :ls :b 3 :bp :bn:sp :vs / Ctrl-w j/k/h/l수평/수직 분할; Ctrl-w + 이동 으로 윈도우 사이를 이동.
:vs src/index.ts | Ctrl-w l | Ctrl-w j — work in adjacent panes:tabnew / gt / gT / :tabclose태스크당 하나의 버퍼 화면이 필요할 때 탭을 사용.
:tabnew README.md gt gT :tabclose :tabonly보기 & 설정
:set nu / :set relativenumber행 번호 토글; `relativenumber` 는 커서로부터의 거리(이동과 함께 최고).
:set relativenumber && 5j will count in your head:set syntax on / :set filetype=ts구문 강조 켜기 / 확장자 없는 파일의 파일 타입 강제.
:set ft=markdown ; :set bg=dark for dark mode:set paste / :set wrap / :set hlsearch붙여넣기 토글: paste 는 자동 들여쓰기를 막음. hlsearch 는 매치를 유지.
:noh 지금 강조 해제
:set paste then i<Ctrl-r>+ in some terminals비주얼 & 블록 모드
v / V / Ctrl-v비주얼 / 행 비주얼 / 블록 비주얼 — 블록은 텍스트의 열 단위 편집을 가능하게 합니다.
v -> o 비주얼 모드에서 선택 영역의 끝점 토글
Ctrl-v 5j I // Esc — prepend // to 6 lines (classic comment-uncomment)gv / o (in visual)이전 비주얼 영역을 다시 선택; `o` 는 선택 영역의 활성 끝을 토글합니다.
Make a block selection, change something, run the same edit again with .레지스터 & 매크로
"ayy / "ap / :reg이름 있는 레지스터 a 에 얀크한 뒤 a 에서 붙여넣기. :reg 는 모든 레지스터를 나열.
"0 마지막 얀크; "_ 블랙홀; "+ 시스템 클립보드 (+clipboard 빌드일 때)
"ayy "ap ; :reg to list named, 0, +, *q<reg> ... q / @<reg> / @@<reg> 레지스터에 매크로를 녹화하고 @<reg> 로 재생; @@ 는 마지막 매크로를 반복.
qa I" <Esc> $ " <Esc> q 5j @a — quote cells across rows외부
:!cmd / :r !cmdVim 안에서 셸 명령 실행; :r !cmd 는 그 출력을 삽입.
:r !date ; :!%:clean :r ...:r file / :source file.vim커서 위치에 파일 내용 삽입; :source 는 Vim 스크립트(.vimrc, 플러그인) 실행.
:r ~/.vimrc to paste whole config; :runtime! syntax/foo.vim:help <topic>Vim 의 오프라인 도움말은 훌륭합니다. `Ctrl-]` 는 커서 아래 태그로 점프.
:help gq :help motion.txt :help :terminal — open terminal-in-vim (8.0+):terminal임베디드 터미널을 엽니다(Vim 8+ / Neovim).
:vert terminal 수직 분할; :term bash; Ctrl-w N : 터미널 모드 종료
:vert term bash :resize 15 && run tests live치트시트 버전 1.0.0
Vim 9 / Neovim 0.9+ 대응