【Neovim】コマンド・キーバインド完全チートシート - 移動・編集・検索・設定まで網羅

PUBLISHED 2026-02-04

Neovim(nvim)は、Vimをベースにした高機能なテキストエディタです。この記事では、日常的に使用するコマンドからおすすめのキーマップ設定まで、網羅的に紹介します。

モード切り替え

Neovimには複数のモードがあり、それぞれ異なる操作ができます。

キー説明
iカーソル位置でInsertモード
aカーソルの次でInsertモード
I行頭でInsertモード
A行末でInsertモード
o下に新しい行を作成してInsertモード
O上に新しい行を作成してInsertモード
vVisualモード(文字選択)
VVisual Lineモード(行選択)
Ctrl+vVisual Blockモード(矩形選択)
Esc / Ctrl+[Normalモードに戻る

カーソル移動

基本移動

キー説明
h j k l左・下・上・右
w次の単語の先頭
b前の単語の先頭
e単語の末尾
W / B / EWORD単位(空白区切り)で移動
ge前の単語の末尾
0行頭
^行頭(空白除く)
$行末
ggファイル先頭
Gファイル末尾
{数字}G指定行へ移動

行内移動

キー説明
f[char]行内で指定文字へ移動
t[char]行内で指定文字の手前へ移動
F[char]行内で指定文字を後方検索
T[char]行内で指定文字の後ろへ後方移動
;直前のf/t/F/Tを繰り返す
,直前のf/t/F/Tを逆方向に繰り返す
%対応する括弧へ移動

画面スクロール

キー説明
Ctrl+e画面を1行下にスクロール(カーソル固定)
Ctrl+y画面を1行上にスクロール(カーソル固定)
Ctrl+d半画面下にスクロール
Ctrl+u半画面上にスクロール
Ctrl+f1画面下にスクロール(forward)
Ctrl+b1画面上にスクロール(backward)
zzカーソル行を画面中央に
ztカーソル行を画面上部に(top)
zbカーソル行を画面下部に(bottom)

画面内移動

キー説明
H画面上部へ移動(High)
M画面中央へ移動(Middle)
L画面下部へ移動(Low)
[n]H画面上からn行目へ
[n]L画面下からn行目へ

折り返し行での移動

キー説明
gj表示行で1行下へ(折り返し対応)
gk表示行で1行上へ(折り返し対応)
g0折り返し行の先頭へ
g$折り返し行の末尾へ

ジャンプ移動

キー説明
Ctrl+oジャンプリストを戻る
Ctrl+i / Tabジャンプリストを進む
g;変更リストを戻る(前の編集位置)
g,変更リストを進む
gi最後にInsertモードだった位置でInsertモード
gv最後のVisual選択を再選択
`.最後に変更した位置へ
''直前のジャンプ位置の行へ

段落・文移動

キー説明
{ / }前/次の段落へ
( / )前/次の文へ
[[ / ]]前/次のセクション・関数へ

編集

基本編集

キー説明
x1文字削除
dd行削除
dw単語削除
d$ / Dカーソルから行末まで削除
yy行コピー
yw単語コピー
pカーソルの後にペースト
Pカーソルの前にペースト
cc行を削除してInsertモード
cw単語を削除してInsertモード
r[char]1文字置換
R上書きモード
uUndo
Ctrl+rRedo
.直前の操作を繰り返す
>> / <<インデント増減
J下の行と結合
~大文字/小文字切り替え

テキストオブジェクト

テキストオブジェクトは、Visual モードや d/c/y などの Operator と組み合わせて使用します。

キー説明
iw単語(inner word)
aw単語+空白(a word)
i" / i'クォート内
a" / a'クォート含む
i( / i)括弧内
i{ / i}中括弧内
i[ / i]角括弧内
itタグ内(HTML)
ip段落内

使用例:

  • di" → ダブルクォート内を削除
  • ci( → 括弧内を変更
  • yaw → 単語+空白をコピー
  • vip → 段落を選択

大文字・小文字変換

キー説明
~カーソル下の文字を大文字/小文字切り替え
gU[motion]大文字に変換
gu[motion]小文字に変換

検索・置換

検索

コマンド説明
/[pattern]前方検索
?[pattern]後方検索
n次の検索結果
N前の検索結果
*カーソル下の単語を前方検索
#カーソル下の単語を後方検索
:noh検索ハイライト消去

検索マッチ操作

キー説明
gn次の検索マッチを選択してVisualモード
gN前の検索マッチを選択してVisualモード
dgn次の検索マッチを削除
cgn次の検索マッチを変更

置換

コマンド説明
:s/old/new/現在行で置換(最初の1つ)
:s/old/new/g現在行で全置換
:%s/old/new/gファイル全体で置換
:%s/old/new/gc確認付きで置換

ファイル操作

コマンド説明
:w保存
:w [filename]名前を付けて保存
:q終了
:q!保存せず終了
:wq / :x / ZZ保存して終了
:e [filename]ファイルを開く
:r [filename]ファイル内容を挿入

バッファ操作

コマンド説明
:lsバッファ一覧
:bn / :bp次/前のバッファ
:bdバッファを閉じる
:b [name]指定バッファへ移動

ウィンドウ操作

分割

コマンド説明
:sp / Ctrl+w s水平分割
:vsp / Ctrl+w v垂直分割
:sp [file]ファイルを水平分割で開く
:vsp [file]ファイルを垂直分割で開く

ウィンドウ間移動

キー説明
Ctrl+w h左のウィンドウへ
Ctrl+w j下のウィンドウへ
Ctrl+w k上のウィンドウへ
Ctrl+w l右のウィンドウへ
Ctrl+w w次のウィンドウへ

ウィンドウ位置変更

キー説明
Ctrl+w H左端に移動
Ctrl+w L右端に移動
Ctrl+w J下端に移動
Ctrl+w K上端に移動
Ctrl+w x隣のウィンドウと入れ替え
Ctrl+w rウィンドウを順方向に回転

ウィンドウサイズ変更

キー説明
Ctrl+w =均等にする
Ctrl+w > / <幅を広げる/狭める
Ctrl+w + / -高さを広げる/狭める
Ctrl+w _高さを最大化
Ctrl+w |幅を最大化

ウィンドウを閉じる

キー説明
Ctrl+w q / :q現在のウィンドウを閉じる
Ctrl+w c現在のウィンドウを閉じる
Ctrl+w o他のウィンドウを全て閉じる

タブ操作

コマンド説明
:tabnew新規タブ
:tabnew [file]ファイルを新規タブで開く
gt / gT次/前のタブ
:tabcloseタブを閉じる

マクロ

キー説明
q[a-z]マクロ記録開始(レジスタ指定)
qマクロ記録終了
@[a-z]マクロ実行
@@直前のマクロを再実行
[n]@[a-z]n回マクロ実行

マーク

キー説明
m[a-z]マークを設定(ファイル内)
m[A-Z]グローバルマークを設定
'[a-z]マーク行へ移動
`[a-z]マーク位置へ移動(列も含む)
:marksマーク一覧

折りたたみ(Fold)

キー説明
zo折りたたみを開く
zc折りたたみを閉じる
za折りたたみをトグル
zO再帰的にすべて開く
zC再帰的にすべて閉じる
zRファイル全体の折りたたみを開く
zMファイル全体を折りたたむ
zj / zk次/前の折りたたみへ移動

ターミナル

コマンド説明
:terminalターミナルを開く
Ctrl+\ Ctrl+nターミナルモードから抜ける

その他便利なコマンド

コマンド説明
:![cmd]外部コマンド実行
:read ![cmd]コマンド出力を挿入
Ctrl+gファイル情報表示
gaカーソル下の文字コード表示
gfカーソル下のファイルを開く
gxカーソル下のURLを開く
Ctrl+a / Ctrl+x数字をインクリメント/デクリメント
:set number行番号表示
:set relativenumber相対行番号表示

おすすめキーマップ設定

以下は、Neovimをより快適に使うためのおすすめ設定です。

Leaderキーによるウィンドウ操作

Ctrl+w より押しやすい設定です。

vim.g.mapleader = " "  -- スペースをLeaderに

vim.keymap.set('n', '<Leader>h', '<C-w>h')  -- 左ウィンドウ
vim.keymap.set('n', '<Leader>j', '<C-w>j')  -- 下ウィンドウ
vim.keymap.set('n', '<Leader>k', '<C-w>k')  -- 上ウィンドウ
vim.keymap.set('n', '<Leader>l', '<C-w>l')  -- 右ウィンドウ
vim.keymap.set('n', '<Leader>s', ':split<CR>')   -- 水平分割
vim.keymap.set('n', '<Leader>v', ':vsplit<CR>')  -- 垂直分割
vim.keymap.set('n', '<Leader>w', ':w<CR>')       -- 保存
vim.keymap.set('n', '<Leader>q', ':q<CR>')       -- 終了

インサートモードでのカーソル移動

Escを押さずにカーソル移動できます。

vim.keymap.set('i', '<C-h>', '<Left>')
vim.keymap.set('i', '<C-j>', '<Down>')
vim.keymap.set('i', '<C-k>', '<Up>')
vim.keymap.set('i', '<C-l>', '<Right>')

コメントトグル

Comment.nvim等のプラグインと組み合わせて使用します。

-- Ctrl+/ でコメントトグル
vim.keymap.set('n', '<C-_>', 'gcc', { remap = true })
vim.keymap.set('v', '<C-_>', 'gc', { remap = true })

LSPキーマップ

vim.keymap.set('n', 'gd', vim.lsp.buf.definition)       -- 定義へ
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration)      -- 宣言へ
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation)   -- 実装へ
vim.keymap.set('n', 'gr', vim.lsp.buf.references)       -- 参照を表示
vim.keymap.set('n', 'grt', vim.lsp.buf.type_definition) -- 型定義へ
vim.keymap.set('n', 'grn', vim.lsp.buf.rename)          -- リネーム
vim.keymap.set('n', 'gra', vim.lsp.buf.code_action)     -- コードアクション
vim.keymap.set('n', 'K', vim.lsp.buf.hover)             -- ホバー情報
vim.keymap.set('n', '<C-W>d', vim.diagnostic.open_float) -- 診断表示

Telescope(ファジーファインダー)

local builtin = require('telescope.builtin')
vim.keymap.set('n', '<Leader>p', builtin.find_files)    -- ファイル検索
vim.keymap.set('n', '<Leader>g', builtin.live_grep)     -- 文字列検索
vim.keymap.set('n', '<Leader>r', builtin.resume)        -- 検索再開
vim.keymap.set('n', '<Leader>H', builtin.help_tags)     -- ヘルプ検索

スクロール設定

:set scrolloff=5       " カーソル上下に常に5行表示
:set sidescrolloff=5   " 横スクロール時の余白

おすすめ設定 TOP5

優先度設定理由
1<Leader>h/j/k/lウィンドウ移動が格段に楽になる
2<C-h/j/k/l> (Insert)Escを押す回数が減る
3Telescopeファイル・文字列検索が高速
4<C-_> コメントVSCode風でわかりやすい
5LSPリネーム grnリファクタリングに必須

参考文献

まとめ

Neovimは多くのコマンドがありますが、最初は基本的な移動(h j k l)、編集(iddyyp)、保存・終了(:w:q)を覚えるだけで十分です。慣れてきたら、テキストオブジェクト、マクロ、LSP連携などを活用すると、編集効率が大幅に向上します。

CATEGORY
TAGS
円