about_Tab_Expansion
簡単な説明
PowerShell には、ヒントの提示、検出の有効化、入力エントリの高速化のために、入力補完が搭載されています。 コマンド名、パラメーター名、引数値、ファイル パスのすべてを、Tab キーを押して補完できます。
長い説明
タブ展開は、内部関数 TabExpansion または TabExpansion2 によって制御されます。 この関数は変更やオーバーライドができるため、この説明は既定の PowerShell 構成の動作についてのガイドとなっています。
Tab キーは、Windows の既定のキー バインドです。 このキーバインドは、PSReadLine モジュールまたは PowerShell をホストしているアプリケーションによって変更できます。 キーバインドは、Windows 以外のプラットフォームでは異なります。 詳細については、「about_PSReadLine」を参照してください。
注意
タブ拡張プロセスの 1 つの制限は、タブがあると、必ず単語の補完を試みていると解釈されることです。 コマンドの例をコピーして PowerShell コンソールに貼り付ける場合は、サンプルにタブが含まれていないことを確認ください。タブが含まれていると結果は予測できず、ほぼ確実に意図したとおりにはなりません。
ファイル名とコマンドレット名の入力候補
使用可能な選択肢からファイル名またはパスを自動的に入力するには、名前の一部を入力して Tab キーを押します。 PowerShell は自動的に名前を拡張し、最初に見つかった一致する項目を表示します。 Tab キーを繰り返し押すと、すべての利用可能な選択肢が順番に表示されます。
コマンドレット名のタブ拡張は若干異なります。 コマンドレット名にタブ拡張を使用するには、名前の最初の部分全体 (動詞) とそれに続くハイフンを入力します。 部分一致するよう、名前をより詳細に入力することもできます。
たとえば、「get-co
」と入力して Tab キーを押すと、これが PowerShell によって Get-Command
コマンドレットに自動的に展開されます (文字の大文字と小文字の区別もその標準形式に変更されることに注目してください)。 もう一度 Tab キーを押すと、PowerShell によってこれが他の一致する唯一のコマンドレット名 Get-Content
に置き換えられます。
注意
また、PowerShell 7.0 より、Tab キーで省略形のコマンドレットや関数が完全な形で示されます。 たとえば、i-psdf<tab>
では Import-PowerShellDataFile
が返されます。
タブ補完は、PowerShell エイリアスとネイティブ実行可能ファイルを解決するためにも機能します。
同じ行にタブ拡張を繰り返し使用できます。 たとえば、Get-Content
コマンドレットの名前に対してタブ展開を使用するには、次のように入力できます。
例
PS> Get-Con<Tab>
Tab キーを押すと、コマンドは次のように拡張されます。
PS> Get-Content
次に、アクティブ セットアップのログ ファイルのパスを部分的に指定し、もう一度タブ拡張を使用できます。
PS> Get-Content c:\windows\acts<Tab>
Tab キーを押すと、コマンドは次のように拡張されます。
PS> Get-Content C:\windows\actsetup.log
PSReadLine には、メニュー入力候補機能もあります。 Windows の既定のキー バインドは Ctrl-Space です。
PS> fore<Ctrl-Space>
Ctrl Space キー-を押すと、一致する値の完全な一覧がメニューとして表示されます。
PS> foreach
foreach ForEach-Object foreach.cmd
この例では、文字列 'fore' は (PowerShell エイリアス)、(コマンドレット) ForEach-Object
、および (ネイティブ コマンド) にforeach.cmd
一致foreach
します。 方向キーを使用して、目的の値を選択します。
パラメーター引数の入力候補
タブ補完は、パラメーター引数を完了するためにも機能します。 これにより、 Tab キーを使用して、一部のパラメーターに対して有効な使用可能な値の一覧を順番に表示できます。
詳細については、「 about_Functions_Argument_Completion」を参照してください。
列挙値の入力候補
PowerShell 7.0 以降では、列挙型のタブ補完のサポートが追加されました。 タブ補完を使用して、列挙型を使用する任意の場所で必要な値を選択できます。 例:
enum Suits {
Clubs = 0
Diamonds = 1
Hearts = 2
Spades = 3
}
[Suits]$suit = 'c<Tab>
列挙値は文字列であるため、完了する値は単一引用符または二重引用符で始まる必要があります。
Tab キーを押すと、次の結果が得られます。
[Suits]$suit = 'Clubs'
タブ補完は、.NET 列挙体でも機能します。
[System.IO.FileAttributes]$attr = 'S<Tab><Tab>
Tab キーを 2 回押すと、文字 "S" で始まる 2 つの値が循環します。 最終的な結果は次のとおりです。
[System.IO.FileAttributes]$attr = 'System'
PowerShell 7.0 以降では、変数に割り当てるときに の ValidateSet
値に対してタブ展開が追加されました。 たとえば、次の変数定義を入力した場合は、次のようになります。
[ValidateSet('Chocolate', 'Strawberry', 'Vanilla')][string]$flavor = 'Strawberry'
$flavor = <tab>
Tab キーを押すと、次の結果が得られます。
$flavor = 'Chocolate'