次の方法で共有


PSReadLine キー ハンドラーの使用

PSReadLine モジュールには、PSReadLine 関数をキーボード コードにマップするキー ハンドラーが用意されています。 キーボード コードとは、同時に押される 1 つ以上のキーストロークのシーケンスです。 たとえば、Ctrl+Space キーというコードは、同時に押す Ctrl キーと Space キーの組み合わせです。 PSReadLine 関数は、コマンド ラインで実行できる定義済みのアクションです。 たとえば、MenuComplete 関数を使うと、コマンド ラインでメニューのオプションの一覧から選択を行い、入力を完了できます。

PSReadLine には、既定でバインドされている定義済みのキー ハンドラーがいくつかあります。 また、独自のカスタム キー ハンドラーを定義することもできます。 次のコマンドを実行すると、現在定義されているキー ハンドラーを一覧表示できます。

Get-PSReadLineKeyHandler

また、キー コードにバインドできる、バインドされていないすべての PSReadLine 関数の一覧を取得することもできます。

Get-PSReadLineKeyHandler -Unbound

Set-PSReadLineKeyHandler コマンドレットを使って、関数をキー ハンドラーにバインドできます。 次のコマンドでは、MenuComplete 関数を Ctrl+Space キーというコードにバインドします。

Set-PSReadLineKeyHandler -Chord 'Ctrl+Spacebar' -Function MenuComplete

キー名とコード バインドの検索

コード内のキーの名前は、[System.ConsoleKey] 列挙型によって定義されます。 詳しくは、System.ConsoleKey のドキュメントを参照してください。 たとえば、[System.ConsoleKey]2 キーの名前は D2 です。一方、テンキーの 2 キーの名前は NumPad2 です。 [System.Console]::ReadKey() メソッドを使って、押したキーの名前を確認することができます。

[System.Console]::ReadKey()

次の出力は、Ctrl+2 キーというキー コードに対して 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+X キーと 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 キーとして扱うことができます。

ターミナル アプリケーションの構成

ターミナル.app の [アプリ] バーから [設定] ウィンドウを開きます。 [プロファイル] を選択し、構成するプロファイルを選択します。 構成オプションの [キーボード] タブを選択します。 キーの一覧の下にある [メタキーとしてOptionキーを使用] 設定を選択します。 この設定により、ターミナル アプリケーションで ⌥ Option キーを Alt キーとして使うことができます。

Terminal.app の設定のスクリーンショット。

iTerm2 アプリケーションの構成

iTerm.app の [アプリ] バーから [設定] ウィンドウを開きます。 [Profiles] (プロファイル) を選択し、構成するプロファイルを選択します。 構成オプションの [Keys] (キー) タブを選択します。 [Left Option Key] (左 Option キー)[Right Option Key] (右 Option キー) の両方の設定で [Esc+] オプションを選択します。 この設定により、iTerm アプリケーションで ⌥ Option キーを Alt キーとして使うことができます。

iTerm.app の設定のスクリーンショット。

注意

厳密な手順は、macOS とターミナル アプリケーションのバージョンによって異なる場合があります。 これらの例は、macOS Ventura 13.2.1 と iTerm2 v3.4.16 を使用したものです。

Linux

Linux プラットフォームの場合、生成されるキー コードは他のシステムとは異なる場合があります。 たとえば次のような点です。

  • Ctrl+[ キーは Escape キーと同じです

  • Ctrl+Space キーを押すと、Ctrl+D2 のキー コードが生成されます。 関数を Ctrl+Space キーにマップしたいときは、コード 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 キーを押して入力を完了します。 選択肢を移動する際に、選択したコマンドのヘルプがメニューの下に表示されます。

ClearScreen

この関数は、cls コマンドや clear コマンドと同様に画面をクリアします。

既定のコード: Ctrl+l

SelectCommandArgument

コマンド ラインの次の引数を選択します。

既定のコード: Alt+a

異なるパラメーター値を使ってもう一度実行したいコマンドが履歴にある場合があります。 このコードを使うと、各パラメーターに順番に移動し、必要に応じて値を変更することができます。

New-AzVM -ResourceGroupName myRGName -Location eastus -Name myVM

Alt+a キーを押すと、次のパラメーター引数が順番に選択されます (myRGNameeastusmyVM)。

GotoBrace

カーソルを対応するかっこに移動します。

既定のコード: Ctrl+]

この関数は、コマンド ライン上でカーソルを、現在のカーソル位置にあるかっこに対応する右かっこに移動します。 この関数は、角かっこ ([])、中かっこ ({})、かっこ (()) に対して機能します。

DigitArgument

数値引数の使用を開始または累積して、キーストロークを指定した回数だけ繰り返します。

既定のコード: Alt+0 から Alt+9

たとえば、コマンド ラインで Alt+4+# キーを押すと、#### が入力されます。

こちらもご覧ください