VSCode で書いていたメモ・コードを Neovim に移行するにあたって、毎回参照したい基本操作を 1 ページにまとめた。Normal モードを起点に「モード切替 → 移動 → 編集 → 検索 → ファイル/ウィンドウ → レジスタ・マクロ」の順で並べている。

表記: <C-x> は Ctrl+x、<S-x> は Shift+x。{N} は数値プレフィックス(例: 5j で 5 行下)。

1. モード

Neovim はモード型エディタで、入力するキーが「コマンド」か「文字」かはモードで決まる。Normal が起点で、編集やコマンド実行のためにモードを切り替えて戻ってくるのが基本リズム。

モード役割入り方戻り方
Normal移動・操作の起点起動直後 / <Esc> / <C-[>
Insert文字を挿入i a I A o O<Esc>
Visual文字単位で範囲選択v<Esc>
Visual Line行単位で範囲選択V<Esc>
Visual Block矩形選択<C-v><Esc>
Command-line: コマンド入力:<Esc> / <CR> 実行
Replace上書き入力R<Esc>
Terminal内蔵ターミナル:terminal<C-\><C-n>

つまずきポイント: Insert で :wq と打つと文字列として入ってしまう。保存する前に必ず <Esc> で Normal に戻る

2. 起動と終了

キー / コマンド動作
nvim空のバッファで起動
nvim file.mdファイルを開いて起動
:w保存
:w newname.md別名で保存
:q終了(未保存変更があれば拒否)
:q!変更を破棄して終了
:wq / :x保存して終了
ZZ保存して終了(Normal、:wq の短縮)
ZQ保存せず終了(Normal、:q! の短縮)
:e fileバッファに別ファイルを開く
:e!編集中バッファをディスクから再読込

3. カーソル移動

{N} プレフィックスで「N 回繰り返す」になる(例: 10j で 10 行下)。

文字・行単位

キー動作
h j k l左 / 下 / 上 / 右
0行頭(列1)
^行頭(最初の非空白)
$行末

単語単位

キー動作
w次の単語の先頭へ
b前の単語の先頭へ
e現在/次の単語の末尾へ
W B E大文字版(空白区切りでより大きな単語)

ファイル単位 / 画面スクロール

キー動作
ggファイル先頭
Gファイル末尾
{N}G / :{N}N 行目へ
<C-d> / <C-u>半画面下/上
<C-f> / <C-b>1 画面下/上
H M L画面上端/中央/下端へ
zzカーソル行を画面中央へ

対応括弧・ジャンプ

キー動作
%対応する () [] {} へジャンプ
*カーソル下の単語を前方検索
#カーソル下の単語を後方検索
<C-o>ジャンプ履歴を戻る
<C-i>ジャンプ履歴を進む

4. 編集(Insert への入り方と削除/コピー/貼り付け)

Insert モードへ入る

キー動作
iカーソル位置の前から挿入
aカーソル位置の後ろから挿入
I行頭(非空白)から挿入
A行末から挿入
o下に新規行を作って挿入
O上に新規行を作って挿入

削除 / 置換 / 取り消し

キー動作
xカーソル下の 1 文字削除
Xカーソル左の 1 文字削除
r{c}カーソル下の 1 文字を c に置換
RReplace モード(上書き入力)
dd1 行削除
D行末まで削除(d$ と等価)
C行末まで削除して Insert(c$ と等価)
u取り消し(undo)
<C-r>取り消しのやり直し(redo)
.直前の編集を繰り返す

コピー / 貼り付け(ヤンク)

キー動作
yy1 行ヤンク
yw1 単語ヤンク
y$行末までヤンク
pカーソル後ろに貼り付け
Pカーソル前に貼り付け

Normal モードの d c x も内部レジスタにヤンクされる(切り取り扱い)。

5. 演算子 + モーション + テキストオブジェクト

Vim/Neovim 編集の中核。{演算子}{モーション or テキストオブジェクト} の組み合わせで覚える。

演算子動作
d削除(delete)
c削除して Insert(change)
yヤンク(yank)
> <インデント増/減
=自動インデント

組み合わせ例:

コマンド意味
dw単語を削除
d$行末まで削除
c3w3 単語を削除して Insert
y%対応括弧までヤンク

テキストオブジェクト(i=内側 / a=外側)

対象innera
単語iwaw
isas
段落ipap
"..."i"a"
(...)i( / iba( / ab
{...}i{ / iBa{ / aB
[...]i[a[
<...>i<a<
HTMLタグitat

例:

コマンド意味
di""..." の中身を削除
ci((...) の中身を削除して Insert
yap段落を空行込みでヤンク
citHTMLタグの中身を削除して Insert

6. 検索と置換

検索

キー動作
/pattern前方検索
?pattern後方検索
n次のマッチ(検索方向そのまま)
N前のマッチ(検索方向逆)
*カーソル下単語を前方検索
#カーソル下単語を後方検索
:noh検索ハイライトを消す

置換

コマンド動作
:s/old/new/現在行で最初の 1 件を置換
:s/old/new/g現在行で全件置換
:%s/old/new/gファイル全体で全件置換
:%s/old/new/gcファイル全体、確認しながら置換
:'<,'>s/old/new/gVisual 選択範囲で置換

/-検索は正規表現が効く。\v を頭につけると Perl 風の very magic モード(例: /\v(foo|bar))。

7. ビジュアルモード

キー動作
v文字単位で選択開始
V行単位で選択開始
<C-v>矩形(ブロック)選択開始
o選択中、選択の始端/終端を入れ替え
gv直前の選択範囲を再選択

選択中に使えるキー: d(削除) / y(ヤンク) / c(削除して Insert) / > <(インデント) / =(自動整形) / ~(大文字小文字反転)。

矩形選択 → I でブロック先頭にまとめて挿入、A でブロック末尾にまとめて挿入(複数行コメントアウト等)。

8. ファイル / バッファ / ウィンドウ / タブ

概念イメージ
バッファメモリに読み込まれた 1 ファイル
ウィンドウバッファを表示する画面分割
タブウィンドウのレイアウトのまとまり(VSCode のタブとは違う)

バッファ

コマンド動作
:e file新規バッファで開く
:ls / :buffersバッファ一覧
:bn / :bp次/前のバッファへ
:b {番号 or 名前}指定バッファへ
:bd現在のバッファを閉じる

ウィンドウ分割

コマンド / キー動作
:sp [file] / <C-w>s横分割
:vsp [file] / <C-w>v縦分割
<C-w>h/j/k/l隣のウィンドウへ移動
<C-w>w次のウィンドウへ循環
<C-w>=サイズを均等化
<C-w>_ / ``
<C-w>c / :closeウィンドウを閉じる
<C-w>o / :only他のウィンドウを閉じる

タブ

コマンド / キー動作
:tabnew [file]新規タブ
gt / gT次/前のタブへ
:tabcloseタブを閉じる
:tabsタブ一覧

9. レジスタ / マーク / マクロ

レジスタ

記法意味
"a名前付きレジスタ a (a-z で 26 個)
"+システムクリップボード
"0直近のヤンク専用
"_ブラックホール(削除しても他レジスタを汚さない)
:regレジスタ内容一覧

例:

コマンド動作
"ayy行を a レジスタへヤンク
"apa レジスタの内容を貼り付け
"+y "+pシステムクリップボード経由でコピー/貼り付け
"_ddレジスタを汚さずに行削除

マーク(位置の栞)

キー動作
m{a}現在位置を a に保存(a-z はバッファローカル、A-Z はグローバル)
'aa の へジャンプ
`aa の 位置(行+列) へジャンプ
:marksマーク一覧

マクロ

キー動作
q{a}a レジスタへの記録開始
q記録停止
@{a}a の記録を再生
@@直前のマクロを再生
{N}@{a}N 回再生(例: 100@a)

10. よく使う : コマンド早見表

コマンド動作
:help {topic}ヘルプを引く(:h)
:set number / :set nu行番号表示
:set relativenumber / :set rnu相対行番号
:set hlsearch / :noh検索ハイライト ON / 消去
:set ignorecase :set smartcase大文字小文字無視 / 賢く判定
:set wrap / :set nowrap折り返し ON/OFF
:set list不可視文字を表示
:%y+ファイル全体をシステムクリップボードへヤンク
:terminal / :term内蔵ターミナル起動
:source %現在ファイルを設定として読み込む
:checkhealth環境診断(クリップボード/プロバイダ等)

11. 初心者がつまずくポイント

症状原因 / 対処
Insert モード中に :wq と打って wq が文字列として入った<Esc> で Normal に戻る癖をつける。挿入直後に : を打ちたくなったら反射的に <Esc>
q! のつもりが q で「変更があるため終了できません」と言われる:q! で破棄、:wq で保存
削除すると毎回クリップボードが上書きされるデフォルトで内部レジスタを使うので問題ないが、"_dd で「捨てる削除」も覚えておく
Visual で選んだ範囲を再度選びたいgv で直前の選択を復元
画面分割で迷子になる<C-w>w で循環移動、<C-w>= でサイズ均等化
Ctrl+S で保存しようとして端末が固まった(XOFF)<C-q> で復帰。Neovim の保存は :w または ZZ
ヘルプの引き方がわからない:h {キー} :h {コマンド} 例: :h CTRL-W :h :substitute

変更履歴

  • 2026-05-05: 初版公開