次の方法で共有


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>

カーソルを囲むテキストに対して入力候補の実行を試みます。 複数の補完が可能な場合は、最も長い明確なプレフィックスが入力候補に使用されます。 最も長い明確な完了を完了しようとすると、可能な完了の一覧が表示されます。

  • 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 に貢献するフィードバック &

GitHub の PSReadLine

Pull Request を送信するか、GitHub ページでフィードバックを送信してください。

参照

  • PSReadLine は GNU readline ライブラリの影響を大きく受けます。