← Vim研究所

Vimの標準入力補完(Ctrl-n / Ctrl-p / Ctrl-x)の使い方

2019-11-17 公開 ・ 更新: 2026-08-20

LSP由来の高機能な補完プラグインを入れる前に知っておきたいのが、Vimには標準の補完機能が組み込まれているという事実です。長い変数名を最後まで打たなくても、途中まで入力してキーを押すだけで候補から選べます。

目次(10項目)
キーこれだけ覚える
Ctrl-n / Ctrl-pキーワード補完(次候補 / 前候補)
Ctrl-x Ctrl-l行全体を補完
Ctrl-x Ctrl-fファイルパスを補完
Ctrl-x Ctrl-oオムニ補完(言語ごとの意味解析)
Ctrl-y / Ctrl-e候補を確定 / キャンセル

基本のキーワード補完

インサートモードで単語の一部を入力してからCtrl-nを押すと、既存のテキストから一致する単語を検索して候補を挿入します。

BEFORE
function calculateTotal() {
}
calc
Ctrl-n
AFTER
function calculateTotal() {
}
calculateTotal

Ctrl-nCtrl-pで検索方向(下から探すか上から探すか)が変わり、候補が複数あれば続けて押すことで次の候補に切り替えられます。

挿入モードでconと打ってCtrl-nを押した画面。候補のポップアップメニューが開き、configとconnectとconsoleが並んで最初の候補が選択されている
Vim 9.1.1752。con まで打って Ctrl-n を押したところ。候補はバッファの中の単語から集まる

どこから候補を探しているか

特に設定していなければ、次の場所を順に検索して候補を探します。

  1. カレントファイル
  2. 他のウインドウで開いているファイル
  3. ロードされているバッファ(隠しバッファ含む)
  4. ロードされていないバッファ
  5. タグファイル
  6. カレントファイルが#includeしているファイル

検索範囲は'complete'オプションで変更できます。デフォルトのままでも、同じプロジェクト内で使っている変数名やクラス名の補完には十分機能します。

要点:長い識別子を最後まで打たず、Ctrl-nだけでも大抵の補完は間に合います。プラグインの前にまず標準機能を試す価値があります。

Ctrl-xのサブモードで対象を絞り込む

Ctrl-xに続けて別のキーを押すと、補完対象を特定の種類に絞り込めます。

キー補完対象
Ctrl-x Ctrl-n現在のバッファ内のキーワードのみ
Ctrl-x Ctrl-l行全体(似た行を丸ごと補完)
Ctrl-x Ctrl-fファイルパス(詳細は別記事
Ctrl-x Ctrl-oオムニ補完(言語ごとの意味解析による補完)
Ctrl-x Ctrl-k辞書ファイルから補完

Ctrl-x Ctrl-lの行補完は意外と便利で、似たようなログ出力やコメント行を何度も書くときに、1行分丸ごと補完候補として出してくれます。

補完メニューの操作

補完候補が表示されている間は、Ctrl-n/Ctrl-pで候補間を移動し、Ctrl-yで確定、Ctrl-eでキャンセルして元の入力に戻せます。Enterでも確定できますが、改行を意図しているのか確定を意図しているのか紛らわしい場面があるため、確実に確定したいときはCtrl-yを使う癖をつけておくと事故が少なくなります。

標準補完とLSP補完の使い分け

プログラミング言語のAPI名や関数のシグネチャまで正確に補完したい場合は、LSPベースの補完プラグインのほうが精度が高いです。一方、設定ファイルやMarkdownのような、LSPが対象外のファイルでは標準のキーワード補完が今でも十分役に立ちます。両方を知っておいて、状況に応じて使い分けると実用的です。

使ってみて

LSP補完が使えないYAMLの設定値や、独自定義した長い変数名を書くときはCtrl-nだけで十分間に合っています。プラグインを何も入れていない環境でSSH越しに作業するときも、この標準補完があるおかげで長い識別子の打ち間違いを気にせず済みます。

探索先を complete で絞る

候補をどこから集めるかは complete オプションが決めています。既定にはインクルードしたファイルまで辿る指定が入っているので、大きなプロジェクトでは Ctrl-n を押すたびに待たされることがあります。

:set complete?
set complete=.,w,b,u    " 開いているバッファまでに限る

. が現在のバッファ、w が他のウィンドウ、b が読み込み済みのバッファ、u が読み込みを解いたバッファです。既定に入っている i(インクルードファイル)と t(タグファイル)を外すだけで、体感が変わることがあります。

確定するまで勝手に入れさせない

既定では候補が1つに絞られると、その場で入力欄に挿入されます。打ち続けたいのに勝手に補完される、と感じるときは completeopt を変えます。

set completeopt=menuone,noinsert,noselect

menuone は候補が1つでもメニューを出す、noinsert は選ぶまで挿入しない、noselect は最初から選択状態にしない、という指定です。この3つを入れておくと、補完が出ていても打鍵の邪魔になりません。確定は Ctrl-y、やめるのは Ctrl-e です。

行ごと補完と辞書補完

サブモードの中で見落とされがちなのが、行単位の補完です。Ctrl-x Ctrl-l と押すと、いま打っている文字で始まる行を丸ごと候補にします。似た行が何度も出てくる設定ファイルやログの整形で効きます。

Ctrl-x Ctrl-l    " 行ごと補完
Ctrl-x Ctrl-k    " 辞書ファイルから補完
set dictionary+=/usr/share/dict/words

辞書補完は dictionary に指定したファイルの単語を候補にします。英文を書くときに綴りの怪しい単語を確かめる用途に使えます。用語集をファイルにしておけば、プロジェクト固有の名前を補完させることもできます。

まとめ

Vim標準の補完はCtrl-n/Ctrl-pだけで大半の場面をカバーできます。ファイルパスや行単位の補完が欲しいときはCtrl-xのサブモードを使い分けます。LSP補完が使えない場面でこそ真価を発揮します。

関連記事

← Vim研究所 トップへ戻る