Task:デフォルトでは、WindowsコマンドプロンプトでTabキーを押すとファイル名が出力されますが、PowerShellでは何も実行されません。スクリプトではなく、対話モードでTAB文字を入力できるようにしたい。
研究:このサイトとGoogle検索で同様の質問を見つけました。見つかったソリューションは、 bash (Mac)または iterm (Linux)に対処していたか、または TweakUI などの別のプログラムに変更することを提案していました。私の質問は、Windows PowerShellまたはコマンドプロンプトに固有のものです。
明確化:あなたの答えが私の質問に対して機能するかどうかの簡単なテストは、echo "1 TAB-method 2"
をPS/CPに入力することです。TAB-methodは、タブ文字。エコーが1 2
(つまり、1に続いてTABスペースに続いて2)を与える場合、それが私が探しているものです。それがお役に立てば幸いです。そして、質問を見てくれてありがとう。
それが役立つ場合は、二重引用符で囲まれた文字列にタブ文字を埋め込むことができます:
PS> "`t hello"
次のような[char] 9でテストします。
$Tab = [char]9
Write-Output "$Tab hello"
出力:
hello
Windowsコマンドプロンプトでは、次のように起動することでタブ補完を無効にできます。
cmd.exe /f:off
次に、タブ文字が画面にエコーされ、期待どおりに機能します。または、タブ補完文字を無効にするか、レジストリを変更してタブ補完に使用する文字を変更できます。
cmd.exe
ヘルプページで説明しています。
/ F:ONまたは/ F:OFFスイッチを使用して、CMD.EXEの特定の呼び出しに対してファイル名の補完を有効または無効にすることができます。 REGEDIT.EXEを使用してレジストリで次のREG_DWORD値のいずれかまたは両方を設定することにより、マシンおよび/またはユーザーログオンセッションでのCMD.EXEのすべての呼び出しの完了を有効または無効にできます。
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar and/or HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar
特定の機能に使用する制御文字の16進値(例:0x4はCtrl-D、0x6はCtrl-F)。ユーザー固有の設定は、マシンの設定より優先されます。コマンドラインスイッチは、レジストリ設定よりも優先されます。
/ F:ONスイッチで補完が有効になっている場合、使用される2つの制御文字は、ディレクトリ名の補完にCtrl-D、ファイル名の補完にCtrl-Fです。レジストリ内の特定の補完文字を無効にするには、有効な制御文字ではないため、スペースの値(0x20)を使用します。
TABは、PowerShellで特定の意味を持ちます。コマンド補完用です。したがって、「getch」と入力してからTABを入力すると。 "GetChildItem"に入力した内容を変更します(不要な場合でも大文字と小文字を修正します)。
あなたの質問から、TAB補完とコマンド補完はTABキーをオーバーロードするように見えます。 PowerShellデザイナーはそれを望んでいないと確信しています。