次の方法で共有


PSReadLine キー ハンドラーの使用

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 として機能できます。

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

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

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

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

正確な手順は、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 を押すと、次のパラメーター引数 (myRGNameeastusmyVM) が選択されます。

GotoBrace

カーソルを一致するブレースに移動します。

既定のコード: Ctrl+]

コマンドライン上で、現在カーソルが位置している括弧に対応する閉じ括弧にカーソルを移動する関数です。 この関数は、角かっこ ([])、中かっこ ({})、および丸かっこ (()) に対して動作します。

数字引数

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

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

たとえば、「 Alt+4+# 」と入力すると、コマンド ラインに #### が入力されます。

こちらも参照ください