PSReadLine モジュールは、PSReadLine 関数をキーボード コードにマップするキー ハンドラーを提供します。 キーボードコードは、同時に押される1つ以上のキーストロークのシーケンスです。
たとえば、和音 Ctrl+Spacebar は、同時に押された Ctrl キー と Space キー の組み合わせです。
PSReadLine 関数は、コマンド ラインで実行できる定義済みのアクションです。 たとえば、 MenuComplete
関数を使用すると、コマンド ラインで入力を完了するメニューからオプションの一覧から選択できます。
PSReadLine には、既定でバインドされている定義済みのキー ハンドラーがいくつかあります。 独自のカスタム キー ハンドラーを定義することもできます。 次のコマンドを実行して、現在定義されているキー ハンドラーを一覧表示します。
Get-PSReadLineKeyHandler
また、キーコードにバインドできるすべてのバインドされていない PSReadLine 関数の一覧を取得することもできます。
Get-PSReadLineKeyHandler -Unbound
Set-PSReadLineKeyHandler
コマンドレットを使用して、関数をキー ハンドラーにバインドできます。 次のコマンドは、 MenuComplete
関数をコード Ctrl+Spacebar にバインドします。
Set-PSReadLineKeyHandler -Chord 'Ctrl+Spacebar' -Function MenuComplete
キー名とコード バインドの検索
コード内のキーの名前は、 [System.ConsoleKey]
列挙型によって定義されます。 詳細については、 System.ConsoleKey のドキュメントを参照してください。 たとえば、[System.ConsoleKey]
キーの名前はD2
ですが、テンキーの 2 キーの名前はNumPad2
。
[System.Console]::ReadKey()
メソッドを使用して、押したキーの名前を見つけることができます。
[System.Console]::ReadKey()
次の出力は、ReadKey()
+ キーコードのメソッドによって返される情報を示しています。
KeyChar Key Modifiers
------- --- ---------
D2 Control
PSReadLine キー ハンドラー コマンドレットの場合、このコードはCtrl+D2
として表されます。 次の例では、このコードを関数にバインドします。
Set-PSReadLineKeyHandler -Chord 'Ctrl+D2' -Function MenuComplete
複数のコードを 1 つの関数にバインドできます。 既定では、 BackwardDeleteChar
関数は 2 つのコードにバインドされます。
Get-PSReadLineKeyHandler -Chord Backspace, Ctrl+h
Key Function Description
--- -------- -----------
Backspace BackwardDeleteChar Delete the character before the cursor
Ctrl+h BackwardDeleteChar Delete the character before the cursor
注
Chord パラメーターでは大文字と小文字が区別されます。 つまり、Ctrl+とCtrl+x に対して異なるバインドを作成できます。
Windows では、 Alt+? キーコードを使用して、入力した次のキーコードにバインドされた関数を表示することもできます。 Alt キーを押すと+次のプロンプトが表示されます。
what-is-key:
Backspace キーを押すと、次の応答が返されます。
Backspace: BackwardDeleteChar - Delete the character before the cursor
Windows 以外のコンピューター上のキー ハンドラー
キーボードによって生成されるキー コードは、使用しているオペレーティング システムとターミナル アプリケーションによって異なる場合があります。
macOS
Macintosh キーボードには、Windows や Linux システムのような Alt キーがありません。 代わりに、 ⌥Option キーがあります。 macOS では、他のシステムの Alt キーとは異なる方法でこのキーが使用されます。 ただし、macOS 上のターミナルと iTerm2 アプリケーションを Alt キーとして扱うように構成できます。
ターミナル アプリケーションの構成
Terminal.app のアプリ バーから [設定] ウィンドウを開きます。 [ プロファイル ] を選択し、構成するプロファイルを選択します。 構成オプションの [ キーボード ] タブを選択します。 キーの一覧の下にある [ オプションをメタ キーとして使用 ] 設定を選択します。 この設定により、 ⌥Option キーをターミナル アプリケーションで Alt として機能できます。
iTerm2 アプリケーションの構成
iTerm.app のアプリ バーから [設定] ウィンドウを開きます。 [ プロファイル ] を選択し、構成するプロファイルを選択します。 構成オプションの [ キー ] タブを選択します。 左オプション キーと右オプション キーの両方の設定で Esc+オプションを選択します。 この設定により、 ⌥Option キーを iTerm アプリケーションで Alt として機能できます。
注
正確な手順は、macOS とターミナル アプリケーションのバージョンによって異なる場合があります。 これらの例は、macOS Ventura 13.2.1 および iTerm2 v3.4.16 でキャプチャされました。
Linux
Linux プラットフォームでは、生成されるキー コードは他のシステムとは異なる場合があります。 例えば次が挙げられます。
+ [ はエスケープと同じです
+ Space キーを押すと、Ctrl+D2 のキー コードが生成されます。 関数 Ctrl+Spacebar をマップする場合は、コード
Ctrl+D2
を使用する必要があります。Set-PSReadLineKeyHandler -Chord 'Ctrl+D2' -Function MenuComplete
ReadKey()
メソッドを使用して、キーボードによって生成されたキー コードを確認します。
一般的に使用されるキー ハンドラー
Windows では、既定でバインドされる一般的に使用されるキー ハンドラーをいくつか次に示します。 Windows 以外のプラットフォームでは、キー バインドが異なる場合があることに注意してください。
メニュー完了
入力可能な完了値のメニューから選択して、入力を完了します。
既定のコード: Ctrl+Spacebar
次の例は、 select
で始まるコマンドで実行できる入力候補のメニューを示しています。
PS C:\> select<Ctrl+Spacebar>
select Select-Object Select-PSFPropertyValue Select-Xml
Select-AzContext Select-PSFConfig Select-PSMDBuildProject
Select-AzSubscription Select-PSFObject Select-String
Select-Object
方向キーを使用して、目的の入力候補を選択します。 Enter キーを押して入力を完了します。 選択範囲を移動すると、選択したコマンドのヘルプがメニューの下に表示されます。
画面クリア
この関数は、 cls
コマンドや clear
コマンドと同様の画面をクリアします。
既定のコード: Ctrl+l
セレクトコマンド引数
コマンド ラインで次の引数を選択します。
既定のコード: Alt+a
履歴には、異なるパラメーター値を使用して再度実行するコマンドが含まれる場合があります。 コードを使用して各パラメーターを順番に切り替え、必要に応じて値を変更できます。
New-AzVM -ResourceGroupName myRGName -Location eastus -Name myVM
Alt キー+a を押すと、次のパラメーター引数 (myRGName
、eastus
、myVM
) が選択されます。
GotoBrace
カーソルを一致するブレースに移動します。
既定のコード: Ctrl+]
コマンドライン上で、現在カーソルが位置している括弧に対応する閉じ括弧にカーソルを移動する関数です。 この関数は、角かっこ ([]
)、中かっこ ({}
)、および丸かっこ (()
) に対して動作します。
数字引数
数値引数を開始または蓄積して、指定した回数だけキーストロークを繰り返します。
既定のコード: Alt+0
から Alt+9
たとえば、「 Alt+4+# 」と入力すると、コマンド ラインに ####
が入力されます。
こちらも参照ください
PowerShell