PSReadLineについて
概要
PSReadLine は、PowerShell コンソールでのコマンド ライン編集エクスペリエンスを向上させます。
詳細説明
PSReadLine は、PowerShell コンソールの強力なコマンド ライン編集エクスペリエンスを提供します。 次の機能を提供します。
- コマンド ラインの構文の色分け
- 構文エラーの視覚的な表示
- より優れたマルチライン エクスペリエンス (編集と履歴の両方)
- カスタマイズ可能なキー バインド
- Cmd モードと Emacs モード
- 多くの構成オプション
- Bash スタイルの入力候補 (Cmd モードでは省略可能、Emacs モードでは既定)
- Emacsのヤンク/キルリング
- PowerShellトークンベースの「単語」移動とキル
クラス [Microsoft.PowerShell.PSConsoleReadLine] では、次の関数を使用できます。
カーソルの移動
エンド・オブ・ライン
- コマンド:
<End> - Emacs:
<End>または<Ctrl+E>
入力に複数の行がある場合は、現在の行の末尾に移動するか、既に行の末尾にある場合は、入力の末尾に移動します。 入力に単一の行がある場合は、入力の末尾に移動します。
BeginningOfLine (行の開始)
- コマンド:
<Home> - Emacs:
<Home>または<Ctrl+A>
入力に複数の行がある場合は、現在の行の先頭に移動するか、既に行の先頭にある場合は、入力の先頭に移動します。 入力に単一の行がある場合は、入力の先頭に移動します。
次の行
- コマンド:非バインド
- Emacs: バインド解除
入力に複数の行がある場合は、カーソルを次の行に移動します。
前へ行
- コマンド:非バインド
- Emacs: バインド解除
入力に複数の行がある場合は、カーソルを前の行に移動します。
フォワードチャー
- コマンド:
<RightArrow> - Emacs:
<RightArrow>または<Ctrl+F>
カーソルを 1 文字右に移動します。 これにより、カーソルが複数行入力の次の行に移動する場合があります。
BackwardChar
- コマンド:
<LeftArrow> - Emacs:
<LeftArrow>または<Ctrl+B>
カーソルを 1 文字左に移動します。 これにより、カーソルが複数行入力の前の行に移動する場合があります。
フォワードワード
- コマンド:非バインド
- Emacsの:
<Alt+F>
カーソルを現在の単語の末尾に移動するか、単語間の場合は次の単語の末尾に移動します。 単語の区切り文字は、次のように設定できます。
Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`
次へワード
- コマンド:
<Ctrl+RightArrow> - Emacs: バインド解除
カーソルを次の単語の先頭に移動します。 単語の区切り文字は、次のように設定できます。
Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`
バックワードワード
- コマンド:
<Ctrl+LeftArrow> - Emacsの:
<Alt+B>
カーソルを現在の単語の先頭に戻すか、単語間の場合は前の単語の先頭に戻します。 単語の区切り文字は、次のように設定できます。
Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`
シェルフォワードワード
- コマンド:非バインド
- Emacs: バインド解除
ForwardWord と同様に、単語の境界は PowerShell トークンの境界によって定義されます。
シェルネクストワード
- コマンド:非バインド
- Emacs: バインド解除
NextWord と同様に、単語の境界は PowerShell トークンの境界によって定義されます。
シェルバックワード
- コマンド:非バインド
- Emacs: バインド解除
BackwardWord と同様に、単語の境界は PowerShell トークンの境界によって定義されます。
ゴトブレース
- コマンド:
<Ctrl+}> - Emacs: バインド解除
一致する括弧、中括弧、または角括弧に移動します。
ラインを追加
- コマンド:
<Shift-Enter> - Emacsの:
<Shift-Enter>
継続プロンプトが次の行に表示され、PSReadLine はキーが現在の入力を編集するのを待機します。 これは、1 行の入力が単独で完了した場合でも、複数行の入力を 1 つのコマンドとして入力する場合に便利です。
基本的な編集
キャンセルライン
- コマンド:非バインド
- Emacs: バインド解除
行への編集をすべてキャンセルし、入力の行は画面に残しますが、入力を実行せずにPSReadLineから戻ります。
リバートライン
- コマンド:
<ESC> - Emacsの:
<Alt+R>
最後の入力が受け入れられて実行されてから、すべての入力を元に戻します。 これは、元に戻すものがなくなるまで Undo コマンドを使用するのと同じです。
BackwardDeleteChar
- コマンド:
<Backspace> - Emacs:
<Backspace>または<Ctrl+H>
カーソルの前の文字を削除します。
DeleteChar
- コマンド:
<Delete> - Emacsの:
<Delete>
カーソルの下の文字を削除します。
DeleteCharOrExit
- コマンド:非バインド
- Emacsの:
<Ctrl+D>
DeleteChar と同様に、行が空でない限り、プロセスを終了します。
アクセプトライン
- コマンド:
<Enter> - Emacs:
<Enter>または<Ctrl+M>
現在の入力の実行を試みます。 現在の入力が不完全な場合 (たとえば、閉じかっこ、角かっこ、引用符が欠落している場合)、次の行に継続プロンプトが表示され、PSReadLine は現在の入力を編集するためのキーを待機します。
AcceptAndGetNext
- コマンド:非バインド
- Emacsの:
<Ctrl+O>
AcceptLine と似ていますが、行が完成したら、履歴の次の行の編集を開始します。
ValidateAndAcceptLine
- コマンド:非バインド
- Emacs: バインド解除
AcceptLine と似ていますが、次のような追加の検証を実行します。
- 追加の解析エラーをチェックします
- コマンド名がすべて見つかったことを検証します
- PowerShell 4.0 以降を実行している場合は、パラメーターと引数を検証します
エラーがある場合、エラー メッセージが表示された状態でコマンド ラインを修正するか、AcceptLine または ValidateAndAcceptLine を再度実行しない限り、エラー メッセージは表示され、受け入れられず、履歴にも追加されません。
BackwardDeleteLine(バックワードデリートライン)
- コマンド:
<Ctrl+Home> - Emacs: バインド解除
入力の先頭からカーソルまでのテキストを削除します。
フォワードデリートライン
- コマンド:
<Ctrl+End> - Emacs: バインド解除
カーソルから入力の末尾までのテキストを削除します。
SelectBackwardChar
- コマンド:
<Shift+LeftArrow> - Emacsの:
<Shift+LeftArrow>
現在の選択範囲を調整して、前の文字を含めます。
SelectForwardChar
- コマンド:
<Shift+RightArrow> - Emacsの:
<Shift+RightArrow>
現在の選択範囲を調整して、次の文字を含めます。
SelectBackwardWord
- コマンド:
<Shift+Ctrl+LeftArrow> - Emacsの:
<Alt+Shift+B>
現在の選択範囲を調整して、前の単語を含めます。
SelectForwardWord(ワードを転送)
- コマンド:非バインド
- Emacsの:
<Alt+Shift+F>
ForwardWord を使用して、次の単語を含むように現在の選択範囲を調整します。
選択する次へワード
- コマンド:
<Shift+Ctrl+RightArrow> - Emacs: バインド解除
NextWord を使用して、次の単語が含まれるように現在の選択を調整します。
SelectShellForwardWord(シェルフォワードワード)
- コマンド:非バインド
- Emacs: バインド解除
ShellForwardWord を使用して、現在の選択範囲を調整して次の単語を含めます。
SelectShellNextWord(シェルネクストワード)
- コマンド:非バインド
- Emacs: バインド解除
ShellNextWord を使用して、現在の選択範囲を調整して次の単語を含めます。
SelectShellBackwardWord (シェルバックワードを選択)
- コマンド:非バインド
- Emacs: バインド解除
ShellBackwardWord を使用して、前の単語を含むように現在の選択範囲を調整します。
SelectBackwardsLine (英語)
- コマンド:
<Shift+Home> - Emacsの:
<Shift+Home>
カーソルから行の先頭に含める現在の選択範囲を調整します。
セレクトライン
- コマンド:
<Shift+End> - Emacsの:
<Shift+End>
カーソルから行の末尾に含める現在の選択範囲を調整します。
全て選択
- コマンド:
<Ctrl+A> - Emacs: バインド解除
行全体を選択します。 カーソルを行の末尾に移動します。
セルフインサート
- コマンド:
<a>、<b>、... - Emacs:
<a>、<b>、...
入力したキーを挿入します。
やり直す
- コマンド:
<Ctrl+Y> - Emacs: バインド解除
[元に戻す] によって元に戻された挿入または削除をやり直します。
元に戻す
- コマンド:
<Ctrl+Z> - Emacsの:
<Ctrl+_>
前の挿入または削除を元に戻します。
歴史
履歴を消去
- コマンド:
<Alt+F7> - Emacs: バインド解除
PSReadLine の履歴をクリアします。 これは PowerShell の履歴には影響しません。
前へ歴史
- コマンド:
<UpArrow> - Emacs:
<UpArrow>または<Ctrl+P>
現在の入力を PSReadLine 履歴の前の項目に置き換えます。
次へ歴史
- コマンド:
<DownArrow> - Emacs:
<DownArrow>または<Ctrl+N>
現在の入力を PSReadLine 履歴の次の項目に置き換えます。
フォワードサーチ履歴
- コマンド:
<Ctrl+S> - Emacsの:
<Ctrl+S>
現在の履歴行から対話形式で前方に検索します。
リバースサーチ履歴
- コマンド:
<Ctrl+R> - Emacsの:
<Ctrl+R>
現在の履歴行から対話形式で逆方向に検索します。
履歴SearchBackward
- コマンド:
<F8> - Emacs: バインド解除
現在の入力を、開始と入力とカーソルの間の文字と一致する PSReadLine 履歴の前の項目に置き換えます。
履歴SearchForward
- コマンド:
<Shift+F8> - Emacs: バインド解除
現在の入力を、開始と入力、およびカーソルの間の文字に一致する PSReadLine 履歴の次の項目に置き換えます。
歴史の始まり
- コマンド:非バインド
- Emacsの:
<Alt+<>
現在の入力を PSReadLine 履歴の最後の項目に置き換えます。
EndOfHistory
- コマンド:非バインド
- Emacsの:
<Alt+>>
現在の入力を PSReadLine 履歴の最後の項目 (履歴コマンドの前に入力された空の可能性がある入力) に置き換えます。
タブ補完
タブコンプリート次へ
- コマンド:
<Tab> - Emacs: バインド解除
次に使用可能な入力候補を使用して、カーソルを囲むテキストの完了を試みます。
タブ完了前
- コマンド:
<Shift-Tab> - Emacs: バインド解除
カーソルを囲むテキストを、次の前の補完で補完してみます。
完成
- コマンド:非バインド
- Emacsの:
<Tab>
カーソルを囲むテキストに対して完了の実行を試みます。 複数の補完が可能な場合は、完了に最も長い明確なプレフィックスが使用されます。 最も長い明確な完了を完了しようとしている場合は、可能な完了のリストが表示されます。
メニュー完了
- コマンド:
<Ctrl+Space> - Emacsの:
<Ctrl+Space>
カーソルを囲むテキストに対して完了の実行を試みます。 複数の候補がある場合は、候補となる入力候補の一覧が表示され、矢印キーまたは Tab/Shift+Tab キーを使用して正しい入力候補を選択できます。Esc キーと Ctrl+G キーを押すと、メニューの選択がキャンセルされ、MenuComplete を呼び出す前の状態に行が戻ります。
ポッションコンプリート
- コマンド:非バインド
- Emacsの:
<Alt+Equals>
入力候補の一覧を表示します。
セットマーク
- コマンド:非バインド
- Emacsの:
<Alt+Space>
後続の編集コマンドで使用するカーソルの現在の位置をマークします。
ExchangePointAndMark (エクスチェンジポイントアンドマーク)
- コマンド:非バインド
- Emacsの:
<Ctrl+X,Ctrl+X>
カーソルはマークの位置に配置され、マークはカーソルの位置に移動されます。
キル/ヤンク
Kill と Yank は、PSReadLine モジュールのクリップボードを操作します。 キルリングと呼ばれるリングバッファがあります - キルされたテキストはキルリングに追加され、yankは最新のキルからテキストをコピーします。 YankPopはキルリング内のアイテムを循環します。 キルリングがいっぱいになると、新しいアイテムが古いアイテムに置き換わります。 キル操作の直前に別のキル操作が行われると、新しいアイテムを追加したり、キルリング内のアイテムを置き換えたりするのではなく、前のキルが追加されます。 これは、たとえば、複数の KillWord 操作で行の一部を切り取り、それらを 1 つのヤンクとして別の場所に引っ張る方法です。
キルライン
- コマンド:非バインド
- Emacsの:
<Ctrl+K>
カーソルから行末までの入力をクリアします。 クリアされたテキストはキルリングに配置されます。
BackwardKillLine (逆方向キリングライン)
- コマンド:非バインド
- Emacs:
<Ctrl+U>または<Ctrl+X,Backspace>
入力の先頭からカーソルへの入力をクリアします。 クリアされたテキストはキルリングに配置されます。
キルワード
- コマンド:非バインド
- Emacsの:
<Alt+D>
カーソルから現在の単語の末尾までの入力をクリアします。 カーソルが単語間にある場合、入力はカーソルから次の単語の末尾まで消去されます。 クリアされたテキストはキルリングに配置されます。
バックワードキルワード
- コマンド:非バインド
- Emacsの:
<Alt+Backspace>
現在の単語の先頭からカーソルへの入力をクリアします。 カーソルが単語間にある場合、入力は前の単語の先頭からカーソルまで消去されます。 クリアされたテキストはキルリングに配置されます。
シェルキルワード
- コマンド:非バインド
- Emacs: バインド解除
KillWord と同様に、単語の境界は PowerShell トークンの境界によって定義されます。
シェルバックワードキルワード
- コマンド:非バインド
- Emacs: バインド解除
BackwardKillWord と同様に、単語の境界は PowerShell トークンの境界によって定義されます。
Unixワードルーブアウト
- コマンド:非バインド
- Emacsの:
<Ctrl+W>
BackwardKillWord と同様に、単語の境界は空白で定義されます。
キルリージョン
- コマンド:非バインド
- Emacs: バインド解除
カーソルとマークの間のテキストを強制終了します。
コピーする
- コマンド:
<Ctrl+Shift+C> - Emacs: バインド解除
選択した領域をシステム クリップボードにコピーします。 領域が選択されていない場合は、行全体をコピーします。
CopyOrCancelLine(コピーまたはキャンセルライン)
- コマンド:
<Ctrl+C> - Emacsの:
<Ctrl+C>
選択したテキストをクリップボードにコピーするか、テキストが選択されていない場合は、CancelLine を使用して行の編集をキャンセルします。
切る
- コマンド:
<Ctrl+X> - Emacs: バインド解除
削除されたテキストをシステム クリップボードに配置する、選択した領域を削除します。
ヤンク
- コマンド:非バインド
- Emacsの:
<Ctrl+Y>
最近強制終了されたテキストを入力に追加します。
ヤンクポップ
- コマンド:非バインド
- Emacsの:
<Alt+Y>
前の操作が Yank または YankPop だった場合は、以前にヤンクしたテキストを、キル リングから次に強制終了したテキストに置き換えます。
クリアキルリング
- コマンド:非バインド
- Emacs: バインド解除
キルリングの中身がクリアされます。
貼り付け
- コマンド:
<Ctrl+V> - Emacs: バインド解除
これは Yank と似ていますが、キルリングの代わりにシステムクリップボードを使用します。
[! 重要]
Paste 関数を使用すると、クリップボード バッファーの内容全体が PSReadLine の入力バッファーに貼り付けられます。 その後、入力バッファーが PowerShell パーサーに渡されます。 コンソール アプリケーションの 右クリック 貼り付けメソッドを使用して貼り付けた入力は、一度に 1 文字ずつ入力バッファーにコピーされます。 改行文字がコピーされると、入力バッファーがパーサーに渡されます。 そのため、入力は一度に 1 行ずつ解析されます。 貼り付けメソッドの違いにより、実行動作が異なります。
ヤンクラストアーグ
- コマンド:
<Alt+.> - Emacs:
<Alt+.>、<Alt+_>
履歴に前のコマンドの最後の引数を挿入します。 繰り返し操作を行うと、最後に挿入された引数が前のコマンドの最後の引数に置き換えられます (つまり、Alt+.Alt + キーを押します。は、最後から 2 番目の履歴行の最後の引数を挿入します)。
引数を使用すると、初めて YankLastArg が YankNthArg のように動作します。 後続の YankLastArg 呼び出しに対する否定的な引数は、履歴をたどるときに方向を変更します。 たとえば、Alt+. 何度も入力すると、Alt + - Alt +を押すことができます。 方向を逆にします。
引数は PowerShell トークンに基づいています。
YankNthArg
- コマンド:非バインド
- Emacsの:
<Alt+Ctrl+Y>
履歴内の前のコマンドの最初の引数 (コマンド名ではない) を挿入します。
引数を指定して、n 番目の引数を挿入します。通常は 0 がコマンドです。 否定的な議論は最後から始まります。
引数は PowerShell トークンに基づいています。
その他
アボート
- コマンド:非バインド
- Emacsの:
<Ctrl+G>
現在のアクションを中止します。たとえば、対話型履歴検索を停止します。 CancelLineのように入力をキャンセルしません。
キャラクターサーチ
- コマンド:
<F3> - Emacsの:
<Ctrl+]>
キーを読み取り、その文字を前方に検索します。 引数を指定すると、その引数の n 番目の出現箇所が前方に検索されます。 否定的な引数を指定すると、逆方向に検索します。
キャラクターSearchBackward
- コマンド:
<Shift+F3> - Emacsの:
<Alt+Ctrl+]>
CharacterSearchと似ていますが、逆方向に検索します。 否定的な引数を指定すると、前方に検索します。
画面クリア
- コマンド:
<Ctrl+L> - Emacsの:
<Ctrl+L>
画面をクリアし、現在のプロンプトと入力を画面の上部に表示します。
数字引数
- コマンド:非バインド
- Emacs:
<Alt+[0..9]>,<any char>,<Alt+->
CharacterSearch や YankNthArg などの関数に数値引数を渡すために使用されます。 Alt+- 引数を否定的/非否定的に切り替える。 80 文字の '*' を入力するには、Alt+8 Alt+0 * を入力します。
キャプチャースクリーン
- コマンド:非バインド
- Emacs: バインド解除
選択した行をテキスト形式と RTF 形式の両方でクリップボードにコピーします。 上/下矢印キーを使用して最初の行を選択し、次に Shift+上矢印/Shift+下矢印を使用して複数の行を選択します。 選択後、Enterキーを押してテキストをコピーします。 Escape/Ctrl+C/Ctrl+G は操作をキャンセルするため、クリップボードには何もコピーされません。
InvokePrompt (英語)
- コマンド:非バインド
- Emacs: バインド解除
現在のプロンプトを消去し、プロンプト関数を呼び出してプロンプトを再表示します。 現在のディレクトリの変更など、状態を変更するカスタムキーハンドラに役立ちます。
WhatIsKeyとは
- コマンド:
<Alt+?> - Emacsの:
<Alt+?>
キーやコードを読み取り、キーバインディングを表示します。
ShowKeyBindings
- コマンド:
<Ctrl+Alt+?> - Emacsの:
<Ctrl+Alt+?>
現在バインドされているすべてのキーを表示します。
スクロールディスプレイアップ
- コマンド:
<PageUp> - Emacsの:
<PageUp>
ディスプレイを 1 画面上にスクロールします。
スクロールディスプレイアップライン
- コマンド:
<Ctrl+PageUp> - Emacsの:
<Ctrl+PageUp>
ディスプレイを 1 行上にスクロールします。
スクロールディスプレイダウン
- コマンド:
<PageDown> - Emacsの:
<PageDown>
ディスプレイを 1 画面下にスクロールします。
スクロールディスプレイダウンライン
- コマンド:
<Ctrl+PageDown> - Emacsの:
<Ctrl+PageDown>
表示を 1 行下にスクロールします。
スクロールディスプレイトップ
- コマンド:非バインド
- Emacsの:
<Ctrl+Home>
ディスプレイを一番上までスクロールします。
ScrollDisplayToCursor (スクロール表示にカーソルを合わせる)
- コマンド:非バインド
- Emacsの:
<Ctrl+End>
ディスプレイをカーソルまでスクロールします。
カスタム キー バインド
PSReadLine では、コマンドレット Set-PSReadLineKeyHandler を使用したカスタム キー バインドがサポートされています。 ほとんどのカスタムキーバインディングは、上記の関数のいずれかを呼び出します。
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
ScriptBlock をキーにバインドできます。 ScriptBlock は、必要な操作をほとんどすべて実行できます。 便利な例をいくつか挙げます。
- コマンド ラインを編集する
- 新しいウィンドウを開く(ヘルプなど)
- コマンド ラインを変更せずにディレクトリを変更する
ScriptBlock は 2 つの引数を受け取ります。
$key- [ConsoleKeyInfo] カスタム バインドをトリガーしたキーであるオブジェクトです。 同じ ScriptBlock を複数のキーにバインドし、キーごとに異なるアクションを実行する必要がある場合は、$keyを確認できます。 多くのカスタム バインドでは、この引数は無視されます。$arg- 任意の引数。 ほとんどの場合、これは、ユーザーがキー バインド DigitArgument から渡す整数引数です。 バインドが引数を受け入れない場合は、この引数を無視するのが妥当です。
コマンド ラインを実行せずに履歴に追加する例を見てみましょう。 これは、何かを忘れたが、既に入力したコマンド ラインを再入力したくない場合に便利です。
$parameters = @{
Key = 'Alt+w'
BriefDescription = 'SaveInHistory'
LongDescription = 'Save current line in history but do not execute'
ScriptBlock = {
param($key, $arg) # The arguments are ignored in this example
# GetBufferState gives us the command line (with the cursor position)
$line = $null
$cursor = $null
[Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line,
[ref]$cursor)
# AddToHistory saves the line in history, but does not execute it.
[Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)
# RevertLine is like pressing Escape.
[Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
}
}
Set-PSReadLineKeyHandler @parameters
PSReadLine モジュール フォルダにインストールされているファイル SamplePSReadLineProfile.ps1 には、さらに多くの例があります。
ほとんどのキー バインドでは、コマンド ラインを編集するためにいくつかのヘルパー関数が使用されます。 これらの API については、次のセクションで説明します。
カスタム キー バインドサポート API
次の関数は Microsoft.PowerShell.PSConsoleReadLine で公開されていますが、キーに直接バインドすることはできません。 ほとんどは、カスタム キー バインドで役立ちます。
void AddToHistory(string command)
コマンド ラインを実行せずに履歴に追加します。
void ClearKillRing()
キルリングをクリアする。 これは主にテストに使用されます。
void Delete(int start, int length)
先頭から長さ文字を削除します。 この操作では、元に戻す/やり直しをサポートしています。
void Ding()
ユーザーの設定に基づいてDingアクションを実行します。
void GetBufferState([ref] string input, [ref] int cursor)
void GetBufferState([ref] Ast ast, [ref] Token[] tokens,
[ref] ParseError[] parseErrors, [ref] int cursor)
これら 2 つの関数は、入力バッファーの現在の状態に関する有用な情報を取得します。 1 つ目は、単純なケースでより一般的に使用されます。 2 つ目は、バインディングが Ast でより高度な処理を行っている場合に使用されます。
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(bool includeBound, bool includeUnbound)
この関数は Get-PSReadLineKeyHandler によって使用され、カスタム キー バインドではおそらく役に立ちません。
Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()
この関数は Get-PSReadLineOption で使用され、カスタム キー バインドではあまり役に立たない可能性があります。
void GetSelectionState([ref] int start, [ref] int length)
コマンドラインで何も選択されていない場合は、-1 start と length の両方で返されます。 コマンドラインに選択がある場合は、選択の開始と長さが返されます。
void Insert(char c)
void Insert(string s)
カーソルに文字または文字列を挿入します。 この操作では、元に戻す/やり直しをサポートしています。
string ReadLine(runspace remoteRunspace,
System.Management.Automation.EngineIntrinsics engineIntrinsics)
これは PSReadLine のメイン エントリ ポイントです。 再帰をサポートしていないため、カスタムキーバインディングでは役に立ちません。
void RemoveKeyHandler(string[] key)
この関数は Remove-PSReadLineKeyHandler で使用され、カスタム キー バインドではあまり役に立たない可能性があります。
void Replace(int start, int length, string replacement)
入力の一部を置き換えます。 この操作では、元に戻す/やり直しをサポートしています。 これは、元に戻すための 1 つのアクションとして扱われるため、Delete の後に Insert を実行するよりも優先されます。
void SetCursorPosition(int cursor)
指定したオフセットにカーソルを移動します。 カーソルの動きは、元に戻すために追跡されません。
void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)
この関数は、コマンドレット Set-PSReadLineOption で使用されるヘルパー メソッドですが、設定を一時的に変更するカスタム キー バインドに役立つ場合があります。
bool TryGetArgAsInt(System.Object arg, [ref] int numericArg,
int defaultNumericArg)
このヘルパー メソッドは、DigitArgument を優先するカスタム バインドに使用されます。 一般的な呼び出しは次のようになります。
[int]$numericArg = 0
[Microsoft.PowerShell.PSConsoleReadLine]::TryGetArgAsInt($arg,
[ref]$numericArg, 1)
メモ
POWERSHELL の互換性
PSReadLine には、PowerShell 3.0 以降とコンソール ホストが必要です。 PowerShell ISE では機能しません。 Visual Studio Codeのコンソールで動作します。
コマンド履歴
PSReadLine は、コマンド ラインから入力したすべてのコマンドとデータを含む履歴ファイルを保持します。 これには、パスワードなどの機密データが含まれている場合があります。 たとえば、 ConvertTo-SecureString コマンドレットを使用すると、パスワードはプレーンテキストとして履歴ファイルに記録されます。 履歴ファイルは $($host.Name)_history.txt という名前のファイルです。 Windows システムでは、履歴ファイルは $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLineに格納されます。
フィードバックと PSReadLine への貢献
GitHub で PSReadLine を する
GitHub ページで pull request を送信するか、フィードバックを送信してください。
関連項目
PSReadLine は、GNU readline ライブラリの影響を大きく受けます。