nob@lit-forge

Vim キーバインド 早見表

モード別(Normal / Insert / Visual / Command)に Vim のキーバインドをまとめた早見表。カーソル移動・編集・置換・検索・マクロ・レジスタ・マーク・ウィンドウ操作を一枚に凝縮。neovim / :help の主要どころも押さえた実用版。

#Vim#neovim#エディタ#キーバインド

モードの基本

  • Normal: カーソル移動・コマンド入力の基本モード(Esc で戻る)
  • Insert: テキスト入力(i / a / o 等で遷移)
  • Visual: 選択モード(v 文字 / V 行 / Ctrl-v 矩形)
  • Command: : で起動、:w, :q, :%s/a/b/g などを実行

カーソル移動

h j k l              # 左 下 上 右
w / b                # 次 / 前の単語
e / ge               # 単語の末尾 / 前の単語の末尾
0 / ^ / $            # 行頭 / 最初の非空白 / 行末
gg / G               # ファイル先頭 / 末尾
{N}G                 # N 行目へ(例: 42G → 42 行目)
Ctrl-d / Ctrl-u      # 半画面下 / 上スクロール
Ctrl-f / Ctrl-b      # 1 画面下 / 上スクロール
H / M / L            # 画面の上 / 中央 / 下
%                    # 対応する ( [ { にジャンプ
f{char} / F{char}    # 行内で char を前方 / 後方検索
t{char} / T{char}    # char の直前(exclusive)
*                    # カーソル下の単語を前方検索(# は後方)
''                   # 直前の位置に戻る
gd                   # ローカル定義にジャンプ

編集コマンド

i / I                # カーソル前 / 行頭で insert
a / A                # カーソル後 / 行末で insert
o / O                # 下 / 上に新規行で insert
x / X                # 1 文字削除(後 / 前)
dd                   # 1 行削除
d{motion}            # motion 分を削除(dw, d$, dG 等)
cc                   # 行を消して insert
c{motion}            # motion 分を消して insert
y{motion}            # motion 分をヤンク(コピー)
yy                   # 1 行ヤンク
p / P                # 後 / 前にペースト
r{char}              # 1 文字置換
R                    # 置換モード(上書き連続)
~                    # カーソル下の大文字小文字切替
u / Ctrl-r           # undo / redo
.                    # 直前の変更を繰り返し

Visual 選択

v                    # 文字選択
V                    # 行選択
Ctrl-v               # 矩形選択
gv                   # 直前の選択範囲を再選択
o                    # 選択の反対端にジャンプ
d / y / c            # 削除 / ヤンク / 変更
>                    # インデント
<                    # アウトデント
=                    # 自動インデント
u / U                # 選択範囲を小 / 大文字化

検索と置換

/pattern             # 前方検索(Enter で実行)
?pattern             # 後方検索
n / N                # 次 / 前のマッチ
:noh                 # ハイライト解除
:%s/foo/bar/g        # 全置換
:%s/foo/bar/gc       # 確認しながら置換
:'<,'>s/foo/bar/g    # 選択範囲のみ置換(Visual から)
:g/pattern/d         # pattern を含む行を全削除
:v/pattern/d         # pattern を含まない行を削除

レジスタ・マーク

"{reg}y              # レジスタ reg にヤンク
"{reg}p              # レジスタ reg からペースト
"+y / "+p            # システムクリップボード(+)
"*y / "*p            # X11 プライマリ(*)
:reg                 # レジスタ内容一覧
m{a-z}               # マークをセット(小文字はバッファ内、大文字はグローバル)
'{a-z}               # マーク行へ
`{a-z}               # マーク位置へ
:marks               # マーク一覧

ウィンドウ・タブ・バッファ

:sp file             # 水平分割
:vsp file            # 垂直分割
Ctrl-w w             # 次ウィンドウへ
Ctrl-w h/j/k/l       # 方向ウィンドウへ
Ctrl-w =             # サイズを揃える
Ctrl-w o             # 今のウィンドウ以外を閉じる
:tabnew              # 新規タブ
gt / gT              # 次 / 前のタブ
:bn / :bp            # 次 / 前のバッファ
:ls                  # バッファ一覧
:bd                  # バッファを閉じる

マクロ・折りたたみ

q{a-z}               # 記録開始(レジスタ a に)
q                    # 記録終了
@{a-z}               # マクロ再生
@@                   # 直前のマクロを再生
{N}@a                # N 回再生(例: 10@a)
zf{motion}           # 折りたたみ作成
zo / zc              # 開く / 閉じる
zR / zM              # 全展開 / 全折りたたみ

よく使う小ワザ

  • ci" / ci( / cit: ダブルクォート / 括弧 / タグの中身を change(HTML・JSON 編集の定番)
  • da{ / di{: 波括弧を含めて / 含まずに操作(block 編集)
  • >i{ / <i{: ブロック内をまとめてインデント / アウトデント
  • Ctrl-a / Ctrl-x: カーソル下の数値をインクリメント / デクリメント
  • :sort / :sort u: 行をソート / 重複除去つきソート
  • :%retab: タブとスペースを変換(set expandtab と併用)
  • “+y で OS クリップボード: set clipboard=unnamedplus すると y 単体でも OK

参考: .vimrc 最小構成例

" 基本
set number                     " 行番号
set relativenumber             " 相対行番号(カーソル移動が楽)
set cursorline                 " カーソル行をハイライト
set expandtab tabstop=2 shiftwidth=2  " スペース派 2 字
set ignorecase smartcase       " 検索は大文字小文字ゆるく
set hlsearch incsearch         " ハイライト & インクリメンタル検索
set clipboard=unnamedplus      " OS クリップボード
set mouse=a                    " マウス許可

" キーマップ
let mapleader=" "
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>/ :noh<CR>