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-[ノーマル モードへ戻る(Ctrl-c / Ctrl-[ でも可)。点滅で待機中のオペレータをキャンセル。
i Hello<Esc> ; then :wカーソル移動
h / j / k / l1 文字左 / 下 / 上 / 右へ移動。(矢印キーでも可。)
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 は 1 つ手前で停止。
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>ノーマル モードのコマンドを 1 回実行(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削除 / カーソル下の 1 文字削除 / 直前 1 文字削除 / 変更(削除 + 挿入開始)。モーションと組合せ: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 / gq1 文字置換(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 正規表現; \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置換 — 全体 / 範囲指定 / フラグ / 1 件毎の確認が可能。
%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バッファ毎に 1 タブを使いたいときに。
: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+ に対応