about_PSReadLine
簡単な説明
PSReadLine では、PowerShell コンソールでコマンド ライン編集エクスペリエンスが向上します。
長い説明
PSReadLine 2.0 は、PowerShell コンソール用の強力なコマンド ライン編集エクスペリエンスを提供します。 次の機能を提供します。
- コマンド ラインの構文の色分け
- 構文エラーを視覚的に示す
- より優れたマルチライン エクスペリエンス (編集と履歴の両方)
- カスタマイズ可能なキー バインド
- Cmd モードと Emacs モード
- 多くの構成オプション
- Bash スタイルの入力候補 (Cmd モードでは省略可能、Emacs モードでは既定値)
- Emacs yank/kill-ring
- PowerShell トークンベースの "単語" の移動と削除
PSReadLine には PowerShell 3.0 以降が必要です。 PSReadLine は、既定のコンソール ホスト、Visual Studio Code、およびウィンドウ ターミナルで動作します。 PowerShell ISE では機能しません。
PSReadLine 2.1.0 は PowerShell 7.2 に付属しており、サポートされているすべてのバージョンの PowerShell でサポートされています。 PowerShell ギャラリーからインストールできます。 サポートされているバージョンの PowerShell に PSReadLine 2.1.0 をインストールするには、次のコマンドを実行します。
Install-Module -Name PSReadLine -RequiredVersion 2.1.0
注意
PowerShell 7.0 以降では、スクリーン リーダー プログラムが検出された場合、PowerShell は Windows での PSReadLine の自動読み込みをスキップします。 現在、PSReadLine はスクリーン リーダーではうまく機能しません。 Windows 上の PowerShell 7.0 の既定のレンダリングと書式設定は正しく機能します。 必要に応じて、モジュールを手動で読み込むことができます。
Microsoft.PowerShell.PSConsoleReadLine クラスでは、次の関数を使用できます。
基本的な編集機能
中止
現在のアクション (増分履歴検索など) を中止します。
- Emacs:
<Ctrl+g>
AcceptAndGetNext
現在の入力の実行を試みます。 実行できる場合 (AcceptLine など)、次に ReadLine が呼び出されるときに履歴から次の項目を呼び出します。
- Emacs:
<Ctrl+o>
AcceptLine
現在の入力の実行を試みます。 現在の入力が不完全な場合 (たとえば、閉じかっこ、角かっこ、引用符が見つからない場合)、継続プロンプトが次の行に表示され、PSReadLine はキーが現在の入力を編集するのを待機します。
- コマンド:
<Enter>
- Emacs:
<Enter>
- Vi 挿入モード:
<Enter>
AddLine
継続プロンプトが次の行に表示され、PSReadLine はキーが現在の入力を編集するのを待機します。 これは、1 行の入力が単独で完了した場合でも、複数行の入力を 1 つのコマンドとして入力する場合に便利です。
- コマンド:
<Shift+Enter>
- Emacs:
<Shift+Enter>
- Vi 挿入モード:
<Shift+Enter>
- Vi コマンド モード:
<Shift+Enter>
BackwardDeleteChar
カーソルの前の文字を削除します。
- Cmd:
<Backspace>
、<Ctrl+h>
- Emacs:
<Backspace>
、、<Ctrl+Backspace>
、<Ctrl+h>
- Vi 挿入モード:
<Backspace>
- Vi コマンド モード:
<X>
、<d,h>
BackwardDeleteLine
BackwardKillLine と同様に - 行の先頭からポイントまでのテキストを削除しますが、削除されたテキストはキルリングに配置されません。
- コマンド:
<Ctrl+Home>
- Vi 挿入モード:
<Ctrl+u>
、<Ctrl+Home>
- Vi コマンド モード:
<Ctrl+u>
、、<Ctrl+Home>
。<d,0>
BackwardDeleteWord
前の単語を削除します。
- Vi コマンド モード:
<Ctrl+w>
、<d,b>
BackwardKillLine
入力の先頭からカーソルへの入力をクリアします。 クリアされたテキストはキルリングに配置されます。
- Emacs:
<Ctrl+u>
、<Ctrl+x,Backspace>
BackwardKillWord
現在の単語の先頭からカーソルへの入力をクリアします。 カーソルが単語間にある場合、入力は前の単語の先頭からカーソルまで消去されます。 クリアされたテキストはキルリングに配置されます。
- Cmd:
<Ctrl+Backspace>
、<Ctrl+w>
- Emacs:
<Alt+Backspace>
、<Escape,Backspace>
- Vi 挿入モード:
<Ctrl+Backspace>
- Vi コマンド モード:
<Ctrl+Backspace>
CancelLine
現在の入力を取り消し、画面に入力を残しますが、ホストに戻り、プロンプトが再び評価されるようにします。
- Vi 挿入モード:
<Ctrl+c>
- Vi コマンド モード:
<Ctrl+c>
コピー
選択したリージョンをシステム クリップボードにコピーします。 領域が選択されていない場合は、行全体をコピーします。
- コマンド:
<Ctrl+C>
CopyOrCancelLine
テキストが選択されている場合は、クリップボードにコピーし、それ以外の場合は行を取り消します。
- コマンド:
<Ctrl+c>
- Emacs:
<Ctrl+c>
[切り取り]
削除されたテキストをシステム クリップボードに配置する、選択した領域を削除します。
- コマンド:
<Ctrl+x>
DeleteChar
カーソルの下の文字を削除します。
- コマンド:
<Delete>
- Emacs:
<Delete>
- Vi 挿入モード:
<Delete>
- Vi コマンド モード:
<Delete>
、、<x>
、<d,l>
<d,Spacebar>
DeleteCharOrExit
カーソルの下の文字を削除するか、行が空の場合は、プロセスを終了します。
- Emacs:
<Ctrl+d>
DeleteEndOfBuffer
複数行バッファーの末尾まで削除します。
- Vi コマンド モード:
<d,G>
DeleteEndOfWord
単語の末尾まで削除します。
- Vi コマンド モード:
<d,e>
DeleteLine
複数行バッファーの現在の論理行を削除し、元に戻すことができます。
- Vi コマンド モード:
<d,d>
、<d,_>
DeletePreviousLines
前の要求された論理行と、複数行バッファー内の現在の論理行を削除します。
- Vi コマンド モード:
<d,k>
DeleteRelativeLines
バッファーの先頭から複数行バッファー内の現在の論理行までを削除します。
ほとんどの Vi コマンドと同様に <d,g,g>
、コマンドの先頭に絶対行番号を指定する数値引数を付加できます。これは、現在の行番号と共に、削除する行の範囲を構成します。
指定しない場合、数値引数の既定値は 1 で、複数行バッファー内の最初の論理行を参照します。
複数行から削除される実際の行数は、現在の論理行番号と指定された数値引数の差として計算されます。これは負の数になる可能性があります。 そのため、メソッド名の 相対 部分。
- Vi コマンド モード:
<d,g,g>
DeleteNextLines
複数行バッファー内の現在の論理行と次に要求された論理行を削除します。
- Vi コマンド モード:
<d,j>
DeleteLineToFirstChar
カーソルから行の最初の空白以外の文字にテキストを削除します。
- Vi コマンド モード:
<d,^>
DeleteToEnd
行の末尾まで削除します。
- Vi コマンド モード:
<D>
、<d,$>
DeleteWord
次の単語を削除します。
- Vi コマンド モード:
<d,w>
ForwardDeleteLine
ForwardKillLine と同様に - 行の末尾のポイントからテキストを削除しますが、削除されたテキストはキルリングに配置されません。
- コマンド:
<Ctrl+End>
- Vi 挿入モード:
<Ctrl+End>
- Vi コマンド モード:
<Ctrl+End>
InsertLineAbove
カーソルが現在の行のどこにあるかに関係なく、現在の行の上に新しい空の行が作成されます。 カーソルは新しい行の先頭に移動します。
- コマンド:
<Ctrl+Enter>
InsertLineBelow
カーソルが現在の行のどこにあるかに関係なく、現在の行の下に新しい空の行が作成されます。 カーソルは新しい行の先頭に移動します。
- コマンド:
<Shift+Ctrl+Enter>
InvertCase
現在の文字の大文字と小文字を反転し、次の文字に移動します。
- Vi コマンド モード:
<~>
KillLine
カーソルから入力の最後まで入力をクリアします。 クリアされたテキストはキルリングに配置されます。
- Emacs:
<Ctrl+k>
KillRegion
カーソルとマークの間のテキストを強制終了します。
- 関数はバインド解除されています。
KillWord
カーソルから現在の単語の末尾までの入力をクリアします。 カーソルが単語間にある場合、入力はカーソルから次の単語の末尾までクリアされます。 クリアされたテキストはキルリングに配置されます。
- Cmd:
<Alt+d>
、<Ctrl+Delete>
- Emacs:
<Alt+d>
、<Escape,d>
- Vi 挿入モード:
<Ctrl+Delete>
- Vi コマンド モード:
<Ctrl+Delete>
貼り付け
システム クリップボードからテキストを貼り付けます。
- Cmd:
<Ctrl+v>
、<Shift+Insert>
- Vi 挿入モード:
<Ctrl+v>
- Vi コマンド モード:
<Ctrl+v>
重要
Paste 関数を使用すると、クリップボード バッファーの内容全体が PSReadLine の入力バッファーに貼り付けられます。 その後、入力バッファーが PowerShell パーサーに渡されます。 コンソール アプリケーションの 右クリック 貼り付けメソッドを使用して貼り付けた入力は、一度に 1 文字ずつ入力バッファーにコピーされます。 改行文字がコピーされると、入力バッファーがパーサーに渡されます。 したがって、入力は一度に 1 行ずつ解析されます。 貼り付けメソッドの違いにより、実行動作が異なります。
PasteAfter
クリップボードをカーソルの後に貼り付け、貼り付けたテキストの末尾にカーソルを移動します。
- Vi コマンド モード:
<p>
PasteBefore
クリップボードをカーソルの前に貼り付け、貼り付けたテキストの末尾にカーソルを移動します。
- Vi コマンド モード:
<P>
PrependAndAccept
'#' の前にを追加し、行を受け入れます。
- Vi コマンド モード:
<#>
やり直す
元に戻す。
- コマンド:
<Ctrl+y>
- Vi 挿入モード:
<Ctrl+y>
- Vi コマンド モード:
<Ctrl+y>
RepeatLastCommand
最後のテキスト変更を繰り返します。
- Vi コマンド モード:
<.>
RevertLine
すべての入力を現在の入力に戻します。
- コマンド:
<Escape>
- Emacs:
<Alt+r>
、<Escape,r>
ShellBackwardKillWord
現在の単語の先頭からカーソルへの入力をクリアします。 カーソルが単語間にある場合、入力は前の単語の先頭からカーソルまで消去されます。 クリアされたテキストはキルリングに配置されます。
関数はバインド解除されています。
ShellKillWord
カーソルから現在の単語の末尾までの入力をクリアします。 カーソルが単語間にある場合、入力はカーソルから次の単語の末尾までクリアされます。 クリアされたテキストはキルリングに配置されます。
関数はバインド解除されています。
SwapCharacters
現在の文字とその前の文字を入れ替えます。
- Emacs:
<Ctrl+t>
- Vi 挿入モード:
<Ctrl+t>
- Vi コマンド モード:
<Ctrl+t>
元に戻す
前の編集を元に戻します。
- コマンド:
<Ctrl+z>
- Emacs:
<Ctrl+_>
、<Ctrl+x,Ctrl+u>
- Vi 挿入モード:
<Ctrl+z>
- Vi コマンド モード:
<Ctrl+z>
、<u>
UndoAll
行の以前の編集をすべて元に戻します。
- Vi コマンド モード:
<U>
UnixWordRubout
現在の単語の先頭からカーソルへの入力をクリアします。 カーソルが単語間にある場合、入力は前の単語の先頭からカーソルまで消去されます。 クリアされたテキストはキルリングに配置されます。
- Emacs:
<Ctrl+w>
ValidateAndAcceptLine
現在の入力の実行を試みます。 現在の入力が不完全な場合 (たとえば、閉じかっこ、角かっこ、引用符が見つからない場合)、継続プロンプトが次の行に表示され、PSReadLine はキーが現在の入力を編集するのを待機します。
- Emacs:
<Ctrl+m>
ViAcceptLine
行を受け入れ、挿入モードに切り替えます。
- Vi コマンド モード:
<Enter>
ViAcceptLineOrExit
Emacs モードの DeleteCharOrExit と同様ですが、文字を削除する代わりに行を受け入れます。
- Vi 挿入モード:
<Ctrl+d>
- Vi コマンド モード:
<Ctrl+d>
ViAppendLine
現在の行の下に新しい行が挿入されます。
- Vi コマンド モード:
<o>
ViBackwardDeleteGlob
前の単語を削除し、単語の区切り記号として空白文字のみを使用します。
- Vi コマンド モード:
<d,B>
ViBackwardGlob
空白文字のみを区切り記号として使用して、カーソルを前の単語の先頭に戻します。
- Vi コマンド モード:
<B>
ViDeleteBrace
一致する中かっこ、かっこ、または角かっこを見つけて、中かっこを含むすべての内容を削除します。
- Vi コマンド モード:
<d,%>
ViDeleteEndOfGlob
単語の末尾まで削除します。
- Vi コマンド モード:
<d,E>
ViDeleteGlob
次の glob (空白で区切られた単語) を削除します。
- Vi コマンド モード:
<d,W>
ViDeleteToBeforeChar
指定された文字まで削除します。
- Vi コマンド モード:
<d,t>
ViDeleteToBeforeCharBackward
指定された文字まで削除します。
- Vi コマンド モード:
<d,T>
ViDeleteToChar
指定された文字まで削除します。
- Vi コマンド モード:
<d,f>
ViDeleteToCharBackward
指定された文字まで後方に削除します。
- Vi コマンド モード:
<d,F>
ViInsertAtBegining
挿入モードに切り替え、カーソルを行の先頭に配置します。
- Vi コマンド モード:
<I>
ViInsertAtEnd
挿入モードに切り替え、カーソルを行の末尾に配置します。
- Vi コマンド モード:
<A>
ViInsertLine
現在の行の上に新しい行が挿入されます。
- Vi コマンド モード:
<O>
ViInsertWithAppend
現在の行位置から追加します。
- Vi コマンド モード:
<a>
ViInsertWithDelete
現在の文字を削除し、挿入モードに切り替えます。
- Vi コマンド モード:
<s>
ViJoinLines
現在の行と次の行を結合します。
- Vi コマンド モード:
<J>
ViReplaceLine
コマンド ライン全体を消去します。
- Vi コマンド モード:
<S>
、<c,c>
ViReplaceToBeforeChar
指定された文字までを置き換えます。
- Vi コマンド モード:
<c,t>
ViReplaceToBeforeCharBackward
指定された文字までを置き換えます。
- Vi コマンド モード:
<c,T>
ViReplaceToChar
指定された文字まで削除します。
- Vi コマンド モード:
<c,f>
ViReplaceToCharBackward
指定された文字までを置き換えます。
- Vi コマンド モード:
<c,F>
ViYankBeginningOfLine
バッファーの先頭からカーソルまでヤンクします。
- Vi コマンド モード:
<y,0>
ViYankEndOfGlob
カーソルから WORD の末尾までヤンクします。
- Vi コマンド モード:
<y,E>
ViYankEndOfWord
カーソルから単語の末尾までヤンクします。
- Vi コマンド モード:
<y,e>
ViYankLeft
カーソルの左側にあるヤンク文字。
- Vi コマンド モード:
<y,h>
ViYankLine
バッファー全体をヤンクします。
- Vi コマンド モード:
<y,y>
ViYankNextGlob
カーソルから次の WORD の先頭までヤンクします。
- Vi コマンド モード:
<y,W>
ViYankNextWord
カーソルの後に単語をヤンクします。
- Vi コマンド モード:
<y,w>
ViYankPercent
一致する中かっこの間でヤンクします。
- Vi コマンド モード:
<y,%>
ViYankPreviousGlob
WORD の先頭からカーソルまでヤンクします。
- Vi コマンド モード:
<y,B>
ViYankPreviousWord
カーソルの前に単語をヤンクします。
- Vi コマンド モード:
<y,b>
ViYankRight
カーソルの下と右側のヤンク文字。
- Vi コマンド モード:
<y,l>
、<y,Spacebar>
ViYankToEndOfLine
カーソルからバッファーの末尾までヤンクします。
- Vi コマンド モード:
<y,$>
ViYankToFirstChar
空白以外の最初の文字からカーソルまでヤンクします。
- Vi コマンド モード:
<y,^>
ヤンク
最後に強制終了したテキストを入力に追加します。
- Emacs:
<Ctrl+y>
YankLastArg
前の履歴行の最後の引数をヤンクします。 引数を使用すると、最初に呼び出されたときに、YankNthArg と同じように動作します。 複数回呼び出された場合は、代わりに履歴を反復処理し、arg によって方向が設定されます (負の方向が逆になります)。
- コマンド:
<Alt+.>
- Emacs:
<Alt+.>
、、<Alt+_>
、<Escape,.>
、<Escape,_>
YankNthArg
前の履歴行の最初の引数 (コマンドの後) をヤンクします。 引数を指定すると、n 番目の引数 (0 から始まる) をヤンクし、引数が負の場合は最後の引数から開始します。
- Emacs:
<Ctrl+Alt+y>
、<Escape,Ctrl+y>
YankPop
前の操作が Yank または YankPop の場合は、以前にヤンクされたテキストを kill リングから次に強制終了したテキストに置き換えます。
- Emacs:
<Alt+y>
、<Escape,y>
カーソル移動関数
BackwardChar
カーソルを 1 文字左に移動します。 これにより、カーソルが複数行入力の前の行に移動する場合があります。
- コマンド:
<LeftArrow>
- Emacs:
<LeftArrow>
、<Ctrl+b>
- Vi 挿入モード:
<LeftArrow>
- Vi コマンド モード:
<LeftArrow>
、、<Backspace>
。<h>
BackwardWord
カーソルを現在の単語の先頭に戻すか、単語間の場合は前の単語の先頭に戻します。 Word境界は、構成可能な文字セットによって定義されます。
- コマンド:
<Ctrl+LeftArrow>
- Emacs:
<Alt+b>
、<Escape,b>
- Vi 挿入モード:
<Ctrl+LeftArrow>
- Vi コマンド モード:
<Ctrl+LeftArrow>
単語の境界を定義する文字は、PSConsoleReadLineOptions オブジェクトの WordDelimiters プロパティで構成されます。 WordDelimiters プロパティを表示または変更するには、「Get-PSReadLineOption」および「Set-PSReadLineOption」を参照してください。
BeginningOfLine
入力に複数の行がある場合は、現在の行の先頭に移動するか、既に行の先頭にある場合は、入力の先頭に移動します。 入力に 1 行がある場合は、入力の先頭に移動します。
- コマンド:
<Home>
- Emacs:
<Home>
、<Ctrl+a>
- Vi 挿入モード:
<Home>
- Vi コマンド モード:
<Home>
EndOfLine
入力に複数の行がある場合は、現在の行の末尾に移動するか、既に行の末尾にある場合は、入力の末尾に移動します。 入力に 1 行の行がある場合は、入力の末尾に移動します。
- コマンド:
<End>
- Emacs:
<End>
、<Ctrl+e>
- Vi 挿入モード:
<End>
ForwardChar
カーソルを 1 文字右に移動します。 これにより、カーソルが複数行入力の次の行に移動する場合があります。
- コマンド:
<RightArrow>
- Emacs:
<RightArrow>
、<Ctrl+f>
- Vi 挿入モード:
<RightArrow>
- Vi コマンド モード:
<RightArrow>
、、<Space>
。<l>
ForwardWord
カーソルを現在の単語の末尾まで、または単語間の場合は次の単語の末尾に移動します。 Word境界は、構成可能な文字セットによって定義されます。
- Emacs:
<Alt+f>
、<Escape,f>
単語の境界を定義する文字は、PSConsoleReadLineOptions オブジェクトの WordDelimiters プロパティで構成されます。 WordDelimiters プロパティを表示または変更するには、「Get-PSReadLineOption」および「Set-PSReadLineOption」を参照してください。
GotoBrace
一致する中かっこ、かっこ、または角かっこに移動します。
- コマンド:
<Ctrl+]>
- Vi 挿入モード:
<Ctrl+]>
- Vi コマンド モード:
<Ctrl+]>
GotoColumn
arg で示される列に移動します。
- Vi コマンド モード:
<|>
GotoFirstNonBlankOfLine
行の最初の空白以外の文字にカーソルを移動します。
- Vi コマンド モード:
<^>
、<_>
MoveToEndOfLine
カーソルを入力の末尾に移動します。
- Vi コマンド モード:
<End>
、<$>
NextLine
カーソルを次の行に移動します。
- 関数はバインド解除されています。
NextWord
カーソルを次の単語の先頭に移動します。 Word境界は、構成可能な文字セットによって定義されます。
- コマンド:
<Ctrl+RightArrow>
- Vi 挿入モード:
<Ctrl+RightArrow>
- Vi コマンド モード:
<Ctrl+RightArrow>
単語の境界を定義する文字は、PSConsoleReadLineOptions オブジェクトの WordDelimiters プロパティで構成されます。 WordDelimiters プロパティを表示または変更するには、「Get-PSReadLineOption」および「Set-PSReadLineOption」を参照してください。
NextWordEnd
カーソルを現在の単語の末尾まで、または単語間の場合は次の単語の末尾に移動します。 Word境界は、構成可能な文字セットによって定義されます。
- Vi コマンド モード:
<e>
単語の境界を定義する文字は、PSConsoleReadLineOptions オブジェクトの WordDelimiters プロパティで構成されます。 WordDelimiters プロパティを表示または変更するには、「Get-PSReadLineOption」および「Set-PSReadLineOption」を参照してください。
PreviousLine
カーソルを前の行に移動します。
- 関数はバインド解除されています。
ShellBackwardWord
カーソルを現在の単語の先頭に戻すか、単語間の場合は前の単語の先頭に戻します。 Word境界は、PowerShell トークンによって定義されます。
- 関数はバインド解除されています。
ShellForwardWord
カーソルを次の単語の先頭に移動します。 Word境界は、PowerShell トークンによって定義されます。
- 関数はバインド解除されています。
ShellNextWord
カーソルを現在の単語の末尾まで、または単語間の場合は次の単語の末尾に移動します。 Word境界は、PowerShell トークンによって定義されます。
- 関数はバインド解除されています。
ViBackwardChar
Vi 編集モードでカーソルを 1 文字左に移動します。 これにより、カーソルが複数行入力の前の行に移動する場合があります。
- Vi 挿入モード:
<LeftArrow>
- Vi コマンド モード:
<LeftArrow>
、、<Backspace>
。<h>
ViBackwardWord
カーソルを現在の単語の先頭に戻すか、単語間の場合は前の単語の先頭に戻します。 Word境界は、構成可能な文字セットによって定義されます。
- Vi コマンド モード:
<b>
単語の境界を定義する文字は、PSConsoleReadLineOptions オブジェクトの WordDelimiters プロパティで構成されます。 WordDelimiters プロパティを表示または変更するには、「Get-PSReadLineOption」および「Set-PSReadLineOption」を参照してください。
ViForwardChar
Vi 編集モードでカーソルを 1 文字右に移動します。 これにより、カーソルが複数行入力の次の行に移動する場合があります。
- Vi 挿入モード:
<RightArrow>
- Vi コマンド モード:
<RightArrow>
、、<Spacebar>
。<l>
ViEndOfGlob
区切り記号として空白のみを使用して、カーソルを単語の末尾に移動します。
- Vi コマンド モード:
<E>
ViEndOfPreviousGlob
単語区切り記号として空白のみを使用して、前の単語の末尾に移動します。
- 関数はバインド解除されています。
ViGotoBrace
GotoBrace に似ていますが、トークンベースではなく文字ベースです。
- Vi コマンド モード:
<%>
ViNextGlob
単語区切り記号として空白のみを使用して、次の単語に移動します。
- Vi コマンド モード:
<W>
ViNextWord
カーソルを次の単語の先頭に移動します。 Word境界は、構成可能な文字セットによって定義されます。
- Vi コマンド モード:
<w>
単語の境界を定義する文字は、PSConsoleReadLineOptions オブジェクトの WordDelimiters プロパティで構成されます。 WordDelimiters プロパティを表示または変更するには、「Get-PSReadLineOption」および「Set-PSReadLineOption」を参照してください。
履歴関数
BeginningOfHistory
履歴の最初の項目に移動します。
- Emacs:
<Alt+<>
ClearHistory
PSReadLine の履歴をクリアします。 これは PowerShell の履歴には影響しません。
- コマンド:
<Alt+F7>
EndOfHistory
履歴の最後の項目 (現在の入力) に移動します。
- Emacs:
<Alt+>>
ForwardSearchHistory
履歴を使用して増分前方検索を実行します。
- コマンド:
<Ctrl+s>
- Emacs:
<Ctrl+s>
HistorySearchBackward
現在の入力を、開始と入力とカーソルの間の文字と一致する PSReadLine 履歴の 'previous' 項目に置き換えます。
- コマンド:
<F8>
HistorySearchForward
現在の入力を、開始と入力とカーソルの間の文字と一致する PSReadLine 履歴の 'next' 項目に置き換えます。
- コマンド:
<Shift+F8>
NextHistory
現在の入力を PSReadLine 履歴の 'next' 項目に置き換えます。
- コマンド:
<DownArrow>
- Emacs:
<DownArrow>
、<Ctrl+n>
- Vi 挿入モード:
<DownArrow>
- Vi コマンド モード:
<DownArrow>
、、<j>
。<+>
PreviousHistory
現在の入力を PSReadLine 履歴の 'previous' 項目に置き換えます。
- コマンド:
<UpArrow>
- Emacs:
<UpArrow>
、<Ctrl+p>
- Vi 挿入モード:
<UpArrow>
- Vi コマンド モード:
<UpArrow>
、、<k>
。<->
ReverseSearchHistory
履歴を使用して増分後方検索を実行します。
- コマンド:
<Ctrl+r>
- Emacs:
<Ctrl+r>
ViSearchHistoryBackward
検索文字列の入力を求め、AcceptLine で検索を開始します。
- Vi 挿入モード:
<Ctrl+r>
- Vi コマンド モード:
</>
、<Ctrl+r>
完了関数
完了
カーソルを囲むテキストに対して入力候補の実行を試みます。 複数の補完が可能な場合は、最も長い明確なプレフィックスが入力候補に使用されます。 最も長い明確な完了を完了しようとすると、可能な完了の一覧が表示されます。
- Emacs:
<Tab>
MenuComplete
カーソルを囲むテキストに対して入力候補の実行を試みます。 複数の補完が可能な場合は、最も長い明確なプレフィックスが入力候補に使用されます。 最も長い明確な完了を完了しようとすると、可能な完了の一覧が表示されます。
- Cmd:
<Ctrl+@>
、<Ctrl+Spacebar>
- Emacs:
<Ctrl+Spacebar>
PossibleCompletions
入力候補の一覧を表示します。
- Emacs:
<Alt+=>
- Vi 挿入モード:
<Ctrl+Spacebar>
- Vi コマンド モード:
<Ctrl+Spacebar>
TabCompleteNext
次に使用可能な入力候補を使用して、カーソルを囲むテキストの入力を試みます。
- コマンド:
<Tab>
- Vi コマンド モード:
<Tab>
TabCompletePrevious
カーソルを囲むテキストを、前の使用可能な入力候補で完了しようとします。
- コマンド:
<Shift+Tab>
- Vi コマンド モード:
<Shift+Tab>
ViTabCompleteNext
必要に応じて現在の編集グループを終了し、TabCompleteNext を呼び出します。
- Vi 挿入モード:
<Tab>
ViTabCompletePrevious
必要に応じて、現在の編集グループを終了し、TabCompletePrevious を呼び出します。
- Vi 挿入モード:
<Shift+Tab>
その他の関数
AcceptNextSuggestionWord
インラインまたは選択した候補の次の単語をそのまま使用します。
- 関数はバインド解除されています。
AcceptSuggestion
現在のインラインまたは選択した候補をそのまま使用します。
- 関数はバインド解除されています。
CaptureScreen
対話型画面キャプチャを開始する - 上下の矢印で行を選択し、選択したテキストをテキストおよび HTML としてクリップボードにコピーします。
- 関数はバインド解除されています。
ClearScreen
画面をクリアし、画面上部に現在の線を描画します。
- コマンド:
<Ctrl+l>
- Emacs:
<Ctrl+l>
- Vi 挿入モード:
<Ctrl+l>
- Vi コマンド モード:
<Ctrl+l>
DigitArgument
新しい数字引数を開始して、他の関数に渡します。 これは、keypress によって呼び出される次の関数の乗数として使用できます。 たとえば、 を押すと <Alt+1>
<Alt+0>
、 digit-argument 値が 10 に設定されます。 次に、キーを #
押すと、入力行に 10 #
文字 (##########
) が送信されます。
同様に、 や Left-Arrow
などの<Delete>
他の操作でもこれを使用できます。
- Cmd:
<Alt+0>
、、<Alt+1>
、<Alt+2>
、、<Alt+3>
、<Alt+4>
、、<Alt+5>
、<Alt+6>
、<Alt+7>
<Alt+8>
、、<Alt+9>
<Alt+->
- Emacs:
<Alt+0>
、、<Alt+1>
、<Alt+2>
、、<Alt+3>
、、<Alt+4>
、<Alt+5>
、<Alt+8>
<Alt+6>
<Alt+7>
、、、<Alt+9>
<Alt+->
- Vi コマンド モード:
<0>
、、<1>
、<2>
、、<3>
、<4>
、<5>
、<6>
、<7>
、、<8>
<9>
InvokePrompt
現在のプロンプトを消去し、prompt 関数を呼び出してプロンプトを再表示します。 状態を変更するカスタム キー ハンドラーに役立ちます。 たとえば、現在のディレクトリを変更します。
- 関数はバインド解除されています。
ScrollDisplayDown
ディスプレイを 1 画面下にスクロールします。
- コマンド:
<PageDown>
- Emacs:
<PageDown>
ScrollDisplayDownLine
ディスプレイを 1 行下にスクロールします。
- コマンド:
<Ctrl+PageDown>
- Emacs:
<Ctrl+PageDown>
ScrollDisplayToCursor
ディスプレイをカーソルまでスクロールします。
- Emacs:
<Ctrl+End>
ScrollDisplayTop
ディスプレイを一番上までスクロールします。
- Emacs:
<Ctrl+Home>
ScrollDisplayUp
ディスプレイを 1 画面上にスクロールします。
- コマンド:
<PageUp>
- Emacs:
<PageUp>
ScrollDisplayUpLine
ディスプレイを 1 行上にスクロールします。
- コマンド:
<Ctrl+PageUp>
- Emacs:
<Ctrl+PageUp>
SelfInsert
キーを挿入します。
- 関数はバインド解除されています。
ShowKeyBindings
バインドされたすべてのキーを表示します。
- コマンド:
<Ctrl+Alt+?>
- Emacs:
<Ctrl+Alt+?>
- Vi 挿入モード:
<Ctrl+Alt+?>
ViCommandMode
現在の動作モードを Vi-Insert からVi-Commandに切り替えます。
- Vi 挿入モード:
<Escape>
ViDigitArgumentInChord
viのコードの1つで他の関数に渡す新しい桁引数を開始します。
- 関数はバインド解除されています。
ViEditVisually
$env:EDITOR または $env:VISUAL で指定されたテキスト エディターでコマンド ラインを編集します。
- Emacs:
<Ctrl+x,Ctrl+e>
- Vi コマンド モード:
<v>
ViExit
シェルを終了します。
- 関数はバインド解除されています。
ViInsertMode
挿入モードに切り替えます。
- Vi コマンド モード:
<i>
WhatIsKey
キーを読み、キーのバインド対象を教えてください。
- コマンド:
<Alt+?>
- Emacs:
<Alt+?>
選択関数
ExchangePointAndMark
カーソルはマークの位置に配置され、マークはカーソルの位置に移動されます。
- Emacs:
<Ctrl+x,Ctrl+x>
SelectAll
行全体を選択します。
- コマンド:
<Ctrl+a>
SelectBackwardChar
現在の選択範囲を調整して、前の文字を含めます。
- コマンド:
<Shift+LeftArrow>
- Emacs:
<Shift+LeftArrow>
SelectBackwardsLine
カーソルから行の先頭に含める現在の選択範囲を調整します。
- コマンド:
<Shift+Home>
- Emacs:
<Shift+Home>
SelectBackwardWord
現在の選択範囲を調整して、前の単語を含めます。
- コマンド:
<Shift+Ctrl+LeftArrow>
- Emacs:
<Alt+B>
SelectForwardChar
現在の選択範囲を調整して、次の文字を含めます。
- コマンド:
<Shift+RightArrow>
- Emacs:
<Shift+RightArrow>
SelectForwardWord
ForwardWord を使用して、次の単語を含むように現在の選択範囲を調整します。
- Emacs:
<Alt+F>
SelectLine
カーソルから行の末尾に含める現在の選択範囲を調整します。
- コマンド:
<Shift+End>
- Emacs:
<Shift+End>
SelectNextWord
現在の選択範囲を調整して、次の単語を含めます。
- コマンド:
<Shift+Ctrl+RightArrow>
SelectShellBackwardWord
ShellBackwardWord を使用して、前の単語を含むように現在の選択範囲を調整します。
- 関数はバインド解除されています。
SelectShellForwardWord
ShellForwardWord を使用して、次の単語を含むように現在の選択範囲を調整します。
- 関数はバインド解除されています。
SelectShellNextWord
ShellNextWord を使用して、次の単語を含むように現在の選択範囲を調整します。
- 関数はバインド解除されています。
SetMark
後続の編集コマンドで使用するカーソルの現在の位置をマークします。
- Emacs:
<Ctrl+@>
予測 IntelliSense 関数
注意
これらの関数を使用するには、予測 IntelliSense を有効にする必要があります。
AcceptNextWordSuggestion
予測 IntelliSense からインライン提案の次の単語を受け入れます。 この関数は、次のコマンドを実行して Ctrl+F キーを押してバインドできます。
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord
AcceptSuggestion
カーソルが現在の行の末尾にあるときに RightArrow キー を押して、予測 IntelliSense から現在のインライン候補を受け入れます。
Search関数
CharacterSearch
文字を読み取り、その文字の次の出現箇所を前方に検索します。 引数が指定されている場合は、n 番目の出現箇所を前方 (負の値の場合は後方) で検索します。
- コマンド:
<F3>
- Emacs:
<Ctrl+]>
- Vi 挿入モード:
<F3>
- Vi コマンド モード:
<F3>
CharacterSearchBackward
文字を読み取り、その文字の次の出現箇所を後方に検索します。 引数が指定されている場合は、n 番目の出現箇所を後方 (負の場合は前方) で検索します。
- コマンド:
<Shift+F3>
- Emacs:
<Ctrl+Alt+]>
- Vi 挿入モード:
<Shift+F3>
- Vi コマンド モード:
<Shift+F3>
RepeatLastCharSearch
最後に記録された文字検索を繰り返します。
- Vi コマンド モード:
<;>
RepeatLastCharSearchBackwards
最後に記録された文字検索を、反対方向に繰り返します。
- Vi コマンド モード:
<,>
RepeatSearch
前と同じ方向で最後の検索を繰り返します。
- Vi コマンド モード:
<n>
RepeatSearchBackward
前と同じ方向で最後の検索を繰り返します。
- Vi コマンド モード:
<N>
SearchChar
次の文字を読み取り、それを見つけて、次に文字から戻ります。 これは 't' 機能用です。
- Vi コマンド モード:
<f>
SearchCharBackward
次の文字を読み取り、それを見つけて後方に進み、文字から戻ります。 これは 'T' 機能用です。
- Vi コマンド モード:
<F>
SearchCharBackwardWithBackoff
次の文字を読み取り、それを見つけて後方に進み、文字から戻ります。 これは 'T' 機能用です。
- Vi コマンド モード:
<T>
SearchCharWithBackoff
次の文字を読み取り、それを見つけて、次に文字から戻ります。 これは 't' 機能用です。
- Vi コマンド モード:
<t>
SearchForward
検索文字列の入力を求め、AcceptLine で検索を開始します。
- Vi 挿入モード:
<Ctrl+s>
- Vi コマンド モード:
<?>
、<Ctrl+s>
カスタム キー バインド
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)
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(string[] Chord)
これら 2 つの関数は、 によって Get-PSReadLineKeyHandler
使用されます。 1 つ目は、すべてのキー バインドを取得するために使用されます。 2 つ目は、特定のキー バインドを取得するために使用されます。
Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()
この関数は Get-PSReadLineOption によって使用され、カスタム キー バインドでは役に立たなさそう。
void GetSelectionState([ref] int start, [ref] int length)
コマンド ラインに選択がない場合、関数は start と length の両方で -1 を返します。 コマンド ラインに選択範囲がある場合は、選択範囲の開始と長さが返されます。
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)
入力の一部を置き換えます。 この操作では、元に戻す/やり直しをサポートしています。 これは、元に戻す単一のアクションとして扱われるため、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)
メモ
コマンド履歴
PSReadLine は、コマンド ラインから入力したすべてのコマンドとデータを含む履歴ファイルを保持します。 履歴ファイルは、 という名前のファイルです $($host.Name)_history.txt
。 Windows システムでは、履歴ファイルは に $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine
格納されます。 Windows 以外のシステムでは、履歴ファイルは または $env:HOME/.local/share/powershell/PSReadLine
に$env:XDG_DATA_HOME/powershell/PSReadLine
格納されます。
履歴には、パスワードを含む機密データを含めることができます。 PSReadLine は機密情報のフィルター処理を試みます。 次の文字列を含むコマンド ラインは、履歴ファイルに書き込まれません。
- password
- asplaintext
- token
- apikey
- secret
PSReadLine に貢献するフィードバック &
Pull Request を送信するか、GitHub ページでフィードバックを送信してください。
参照
- PSReadLine は GNU readline ライブラリの影響を大きく受けます。