💡

VS Code 内蔵ターミナル補完設定(terminal.integrated.suggest)をちゃんと理解する

に公開

まえがき

VS Code のターミナル補完は、ここ1〜2年で実用レベルまで進化した。
一方で設定項目は増え、boolean だと思ったら enum だった みたいな罠も多い。

この記事では 2026年1月時点の最新版 VS Code に存在する
terminal.integrated.suggest.* 系設定を、
値が複数あるものはすべて意味付きで整理する。


前提:この補完は「シェル補完」とは別レイヤー

  • bash / zsh / PowerShell が持つ補完

  • VS Code が提供する ターミナル統合補完

VS Code 側の補完は
typo を減らす・事故を未然に防ぐ 方向に特化している。


基本設定

terminal.integrated.suggest.enabled

"terminal.integrated.suggest.enabled": true
  • ターミナル補完全体のマスタースイッチ

  • false にすると以下すべて無効

terminal.integrated.suggest.quickSuggestions

"terminal.integrated.suggest.quickSuggestions": true
  • 入力中に 自動で候補を出すか

  • false にすると Ctrl+Space 明示呼び出しのみ


terminal.integrated.suggest.suggestOnTriggerCharacters

"terminal.integrated.suggest.suggestOnTriggerCharacters": true
  • / - . などの トリガー文字入力時に補完を出すか

  • git checkout - の直後に候補が出るのはこれ


インライン補完(ゴースト文字)

terminal.integrated.suggest.inlineSuggestion

"terminal.integrated.suggest.inlineSuggestion": "off"

行内に薄いグレーで表示される
**未確定の予測文字(インライン補完)**の表示ルールを制御する設定。

この設定は boolean ではなく enum で、
表示位置と優先度まで含めて制御できる。


設定値と意味

挙動
"off" インライン補完を一切表示しない
"alwaysOnTopExceptExactMatch" 完全一致でない場合のみ、候補の先頭としてインライン表示
"alwaysOnTop" 常にインライン補完を最優先で表示

各設定の詳しい挙動

"off"

  • ゴースト文字を完全に無効化

  • 画面に表示される文字=確定文字のみ

  • 認知的なズレが起きない

👉 制御感を最優先したい場合に最適


"alwaysOnTopExceptExactMatch"

  • 候補が存在し、かつ 完全一致していない場合のみ インライン表示

  • すでに入力が完全一致している場合は表示されない

👉
「候補がズレてる時だけ軽くヒントが欲しい」
という 中庸なバランス型


"alwaysOnTop"

  • 常に最優先でインライン補完を表示

  • Copilot 的な先読み体験に近い

👉
補完を「入力の延長」として使う人向け。
ただし、視覚的には一番支配的


使い分けの指針

  • 自分で入力・確定した文字だけを信用したい
    "off"

  • 補完の存在は感じたいが、邪魔はされたくない
    "alwaysOnTopExceptExactMatch"

  • 先読み前提で高速入力したい
    "alwaysOnTop"


補完確定時の挙動

terminal.integrated.suggest.insertTrailingSpace

"terminal.integrated.suggest.insertTrailingSpace": true
  • 補完確定時、末尾にスペースを自動挿入するか

  • 次の引数をすぐ入力できる

CLI 操作が多い場合は true が快適。


terminal.integrated.suggest.selectionMode

"terminal.integrated.suggest.selectionMode": "always"

補完候補リストの 初期選択状態を制御する。

設定値と意味

挙動
"always" 常に先頭候補を選択状態にする
"never" 明示的に選択しない限り確定しない

使い分け

  • Enter 一発で進みたい → "always"

  • 誤爆を極力防ぎたい → "never"


キー操作・ナビゲーション

terminal.integrated.suggest.upArrowNavigatesHistory

"terminal.integrated.suggest.upArrowNavigatesHistory": true

↑キーの役割を制御する。

  • true
    → コマンド履歴を遡る(bash/zsh と同じ)

  • false
    → 補完候補の移動に使う

シェルの筋肉記憶がある人は true 一択。


cd コマンド専用補完

terminal.integrated.suggest.cdPath

"terminal.integrated.suggest.cdPath": "relative"

cd コマンド入力時の パス補完方法を制御する設定。
ディレクトリ移動において、どの形式のパスを補完候補として出すかを決める。


設定値と意味

挙動
"absolute" 絶対パスで補完する
"relative" 相対パスで補完する
"off" cd 専用の補完を無効化する

各設定の詳しい挙動

"absolute"

cd /home/user/project/src
  • 常にルート起点のフルパスで補完

  • パスの所在が分かりやすい

  • ただし 長くなりがち

👉
ディレクトリ構造を明示的に把握したい人向け。


"relative"

cd ./src
cd ../lib
  • 現在位置からの相対パスで補完

  • 入力が短く、CLI 操作が軽い

  • bash/zsh の感覚に近い

👉
日常的なターミナル操作では最も自然


"off"

  • cd に対して VS Code 側の補完を行わない

  • シェル(bash / zsh / PowerShell)の補完のみ使用

👉
VS Code の補完を最小限にしたい場合。


使い分けの指針

  • パスを明示的に確認しながら移動したい
    "absolute"

  • 高速・省入力で移動したい
    "relative"

  • 補完はシェルに任せたい
    "off"


補完ソース・表示系

terminal.integrated.suggest.providers

"terminal.integrated.suggest.providers": {}
  • 補完の提供元(シェル、パス、VS Code 内部など)

  • 通常は触らない

  • カスタマイズは上級者向け


terminal.integrated.suggest.showStatusBar

"terminal.integrated.suggest.showStatusBar": false
  • ターミナル右下の補完ステータス表示

  • 常時不要ならオフでOK


Windows 環境向け

terminal.integrated.suggest.windowsExecutableExtensions

"terminal.integrated.suggest.windowsExecutableExtensions": [
  ".exe",
  ".cmd",
  ".ps1"
]
  • 実行可能ファイルとして扱う拡張子

  • PowerShell 環境では重要


個人的おすすめ設定

{
  "terminal.integrated.suggest.enabled": true,
  "terminal.integrated.suggest.quickSuggestions": true,
  "terminal.integrated.suggest.inlineSuggestion": "alwaysOnTopExceptExactMatch",
  "terminal.integrated.suggest.runOnEnter": "exactMatchIgnoreExtension",
  "terminal.integrated.suggest.suggestOnTriggerCharacters": true,
  "terminal.integrated.suggest.insertTrailingSpace": true,
  "terminal.integrated.suggest.upArrowNavigatesHistory": false,
  "terminal.integrated.suggest.showStatusBar": false
}
  • ゴースト文字なし

  • typo は減る

Discussion