次の方法で共有


シェルでのタブ補完の使用

PowerShell には、ヒントの提示、検出の有効化、入力エントリの高速化のために、入力補完が搭載されています。 コマンド名、パラメーター名、引数値、ファイル パスのすべてを、Tab キーを押して補完できます。

Tab キーは、Windows の既定のキー バインドです。 PSReadLine には MenuComplete 関数も用意されており、これは Ctrl+Space にバインドされています。 MenuComplete 関数を使用すると、コマンド ラインの下に一致する入力候補の一覧が表示されます。

これらのキー バインドは、PSReadLine コマンドレットまたは PowerShell をホストしているアプリケーションを使用して変更できます。 キー バインドは、Windows 以外のプラットフォームでは異なる場合があります。 詳細については、「about_PSReadLine_Functions」を参照してください。

組み込みのタブ補完機能

PowerShell では、コマンド ライン エクスペリエンスの多くの側面でタブ補完が有効になっています。

ファイル名の入力補完

使用可能な選択肢からファイル名またはパスを自動的に入力するには、名前の一部を入力して Tab キーを押します。 PowerShell で自動的に名前が展開され、最初に見つかった一致する項目が表示されます。 Tab キーをもう一度押すと、使用可能なすべての選択肢がキーを押すたびに順番に表示されます。

コマンドとパラメーター名の入力補完

コマンドレット名のタブ拡張は若干異なります。 コマンドレット名にタブ拡張を使用するには、名前の最初の部分全体 (動詞) とそれに続くハイフンを入力します。 部分一致するよう、名前をより詳細に入力することもできます。 たとえば、「get-co」と入力して Tab キーを押すと、これが PowerShell によって Get-Command コマンドレットに自動的に展開されます (文字の大文字と小文字の区別もその標準形式に変更されることに注目してください)。 もう一度 Tab キーを押すと、PowerShell によってこれが他の一致する唯一のコマンドレット名 Get-Content に置き換えられます。 タブ補完は、PowerShell のエイリアスとネイティブの実行可能ファイルの解決用にも機能します。

次の図は、タブとメニューの入力補完の例を示しています。

タブとメニューの入力補完の例

その他のタブ補完の機能強化

PowerShell の新しい各バージョンには、バグを修正して使いやすさを向上させるタブ補完の機能強化が含まれています。

PowerShell 7.0

  • 列挙型または型制約のある変数の代入をタブ補完で解決します
  • タブ補完で短縮形のコマンドレットと関数が展開されます。 たとえば、i-psdf<tab> とすると Import-PowerShellDataFile が返されます

PowerShell 7.2

  • ローカライズされていない about* トピックについてのタブ補完の修正
  • スプラッティングが補完で位置指定パラメーターとして扱われることの修正
  • コメント ベースのヘルプ キーワードの補完の追加
  • #requires ステートメントの補完の追加
  • Format-* コマンドレットの View パラメーターへのタブ補完の追加
  • クラスベースの引数の補完機能に対するサポートの追加

PowerShell 7.3

  • ValidateScriptAttribute に対して指定されたスクリプト ブロック内でのタブ補完を修正
  • break および continue の後のループ ラベルのタブ補完を追加
  • 複数のシナリオでの Hashtable 補完の改善
    • パラメーター スプラッティング
    • Invoke-CimMethodArguments パラメーター
    • Get-WinEventFilterHashtable パラメーター
    • CIM コマンドレットの Property パラメーター
    • メンバー補完シナリオから重複を削除
  • ネットワーク共有 (UNC パス) 補完でのスラッシュのサポート
  • メンバーのオート コンプリートを改善
  • パラメーターの補完で列挙型よりも ValidateSet を優先
  • 型パラメーターを持つジェネリック メソッドの型推定のサポートを追加
  • 型の推定と入力補完を改善
    • ForEach-Object -MemberName のコンプリート結果にメソッドを表示できるようにする
    • void を返す式 ([void]("") など) での入力補完を禁止
    • クラス コンプリートが AST に基づいているときに、既定以外のクラスのコンストラクターを表示できるようにする

コマンド パラメーターのタブ補完を強化するその他の方法

組み込みのタブ展開は、内部関数 TabExpansion または TabExpansion2 によって制御されています。 これらの関数の既定の動作を置き換える関数またはモジュールを作成できます。 PowerShell ギャラリーで TabExpansion キーワードを検索すると、例を見つけることができます。

パラメーターがある ValidateSet または ArgumentCompletions 属性の使用

ArgumentCompletions 属性を使用すると、特定のパラメーターにタブ補完の値を追加できます。 ArgumentCompletions 属性は ValidateSet に似ています。 どちらの属性にも、ユーザーがパラメーター名の後に Tab キーを押したときに表示される値の一覧を設定できます。 ただし、ValidateSet とは異なり、値は検証されません。

詳細については、次を参照してください。

ArgumentCompleter 属性またはパラメーターがある Register-ArgumentCompleter の使用

引数の入力補完は、パラメーター値の動的タブ補完を提供するスクリプト ブロックまたは関数です。

ArgumentCompleter 属性を使用すると、パラメーターのタブ補完の値を提供する関数を登録できます。 引数の入力補完関数は、ArgumentCompleter 属性を持つパラメーターを含む関数で使用できる必要があります。 通常、関数は同じスクリプトまたはモジュール内に定義されます。

詳細については、「ArgumentCompleter」を参照してください。

Register-ArgumentCompleter コマンドレットを使用して、指定した任意のコマンドについて、実行時にスクリプト ブロックを引数の入力補完関数として登録します。 これにより、スクリプトまたはモジュールの外部での、またはネイティブ コマンドを対象にした、引数の入力補完を定義できます。 詳細については、「Register-ArgumentCompleter」を参照してください。

PSReadLine の予測 IntelliSense

PSReadLine 2.1.0 で、予測 IntelliSense 機能が導入されました。 予測 IntelliSense により、PSReadLine 履歴にある項目に基づいて、完全なコマンドの候補が表示されます。

PSReadLine 2.2.2 は、高度なロジックを使用して完全なコマンドの候補を表示するプラグイン モジュールのサポートを追加することで、予測 IntelliSense の機能を拡張しています。 Az.Tools.Predictor モジュールは、予測 IntelliSense の最初のプラグインでした。 それにより、実行しようとしている Azure PowerShell コマンドと、使用しようとしているパラメーターが、Machine Learning を使用して予測されます。

詳細については、「予測機能の使用」を参照してください。