PowerShell でテキストの補完候補をすべてプログラム的に一覧表示する

PowerShell でテキストの補完候補をすべてプログラム的に一覧表示する

私は、あるテキストに対して可能なすべての補完をリストする bash の機能に相当するものを探していますcomplete。基本的には、タブを繰り返し押した場合に取得できるすべてのオプションを提供します。powertab のような優れた機能があることは知っていますが、それらを関数の一部として取得する方法が必要です。

私が実現しようとしているのは、ダム シェルを実行している下位プロセスでタブ補完を有効にすることです。stdin/stdout から送受信しているため、通常のタブ補完は使用できません。テキストの補完をすべて取得できる関数を呼び出せるようにしたいのですが、そうしないと、何も頼りになりません。

答え1

皆さんもご存知のとおり、すべての OS、言語、スクリプト ツールにはそれぞれ長所と短所があります。

慣れ親しんだものや欲しいものが、次に使うものの中にあるとは期待しないでください。X または Y がない場合は、3rdP アドオンが必要であるか、自分で作成する必要があります。

PowerShellコンソールホストとISEはさまざまな目的で設定できますが、それ以外は独自のコードを書く必要があります。PowerShell コンソールホスト、ISEそしてVSCode用

PowerShell には、「完全な」スイッチ、コマンドレットなどはありません。PowerShell コンソールホストで目的のものを取得するには、コマンドレット名、スペース、ダッシュの順に入力し、CRTL + スペースバーを押します。

Get-ChildItem -[CRTL+Spacebar]

ISE と VSCode のエディター ペインには、動的なポップアップ IntelliSense があります。ISE と VSCode のコンソールでは、同じキーボード コンボが機能します。

このユースケースに関しては...

「私が実現しようとしているのは、ダム シェルを実行している下位プロセスでタブ補完を有効にすることです。stdin/stdout から送受信しているため、通常のタブ補完は使用できません。テキストのすべての補完結果を返す関数を呼び出せるようにしたいです。そうしないと、何も頼りになりません。」

... PowerShell の利用可能な言語機能を使用して、これを自分でコーディングする必要があります。たとえば、次のようになります。

または、MS PowershellGalery.comにあるモジュールアドオンを使用する

Find-Module -Name '*expansion*' | Format-Table -AutoSize
Find-Module -Name '*completer*' | Format-Table -AutoSize
Find-Module -Name '*tab*' | Format-Table -AutoSize

こちらのビデオをご覧ください: https://channel9.msdn.com/Blogs/trevor-powershell/Authoring-Custom-PowerShell-Intellisense-with-Trevor-Sullivan

使用している PowerShell のバージョンに応じて、他の Bash のような機能を実現できる項目が他にもあります。例:

PowerShell のタブ補完を Bash のように動作させる方法PowerShell の新しいバージョンには PSReadline が含まれており、これを使用して次の操作を実行できます。

Set-PSReadlineKeyHandler -Key Tab -Function Complete

永続的にするには、このコマンドを

C:\Users\[User]\Documents\WindowsPowerShell\profile.ps1.

関連情報