概要
Powershellの入力をvi風にする手順です、
使用バージョン
> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.22000.2538
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.22000.2538
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
> get-module -Name PSReadLine
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler, Get-PSReadLineOption, Remove-PS...
デフォルトの入力モード
デフォルトは[Windows]となっています。
> Get-PSReadLineOption
EditMode : Windows
...
手順
入力モードをviに変更
> Set-PSReadlineOption -EditMode Vi
> Get-PSReadLineOption
EditMode : Vi
...
変更後の操作方法
vi同様escでコマンドモードへ変更、やで入力モードに変更が出来ます。
> Get-PSReadLineKeyHandler
基本的な編集機能
========
Key Function Description
--- -------- -----------
Enter AcceptLine 入力を受け入れるか、入力に終了トークンがない場合は次の行に移動します
。
Shift+Enter AddLine 入力を実行せずにカーソルを次の行に移動します
<Shift+Enter> AddLine 入力を実行せずにカーソルを次の行に移動します
Backspace BackwardDeleteChar カーソルの前にある文字を削除します
<X> BackwardDeleteChar カーソルの前にある文字を削除します
<d,h> BackwardDeleteChar カーソルの前にある文字を削除します
Ctrl+u BackwardDeleteLine カーソル位置から行頭までのテキストを削除します
Ctrl+Home BackwardDeleteLine カーソル位置から行頭までのテキストを削除します
<Ctrl+u> BackwardDeleteLine カーソル位置から行頭までのテキストを削除します
<Ctrl+Home> BackwardDeleteLine カーソル位置から行頭までのテキストを削除します
<d,0> BackwardDeleteLine カーソル位置から行頭までのテキストを削除します
<Ctrl+w> BackwardDeleteWord 行の前の単語を削除します。
<d,b> BackwardDeleteWord 行の前の単語を削除します。
Ctrl+Backspace BackwardKillWord 現在の単語または前の単語の先頭からカーソル位置までのテキストをキル リ
ングに移動します
<Ctrl+Backspace> BackwardKillWord 現在の単語または前の単語の先頭からカーソル位置までのテキストをキル リ
ングに移動します
<c,h> BackwardReplaceChar カーソルの前の文字を置き換えます。
Ctrl+c CancelLine 現在の行の編集を中止し、プロンプトを再評価します
<Ctrl+c> CancelLine 現在の行の編集を中止し、プロンプトを再評価します
Delete DeleteChar カーソルの下にある文字を削除します
<Delete> DeleteChar カーソルの下にある文字を削除します
<x> DeleteChar カーソルの下にある文字を削除します
<d,l> DeleteChar カーソルの下にある文字を削除します
<d,Spacebar> DeleteChar カーソルの下にある文字を削除します
<d,e> DeleteEndOfWord 空白と一般的な区切り文字で区切られた現在の単語の末尾まで削除します。
<d,d> DeleteLine 現在の行を削除します。
<d,^> DeleteLineToFirstChar 先頭の空白を除いて行全体を削除します。
<D> DeleteToEnd カーソル位置から行末まで削除します。
<d,$> DeleteToEnd カーソル位置から行末まで削除します。
<d,w> DeleteWord 現在の単語を削除します
Ctrl+End ForwardDeleteLine カーソル位置から行末までのテキストを削除します
<Ctrl+End> ForwardDeleteLine カーソル位置から行末までのテキストを削除します
<~> InvertCase 現在の文字の大文字と小文字を反転し、カーソルを進めます。
Ctrl+Delete KillWord カーソル位置から現在の単語または次の単語の末尾までのテキストをキル リ
ングに移動します
<Ctrl+Delete> KillWord カーソル位置から現在の単語または次の単語の末尾までのテキストをキル リ
ングに移動します
Ctrl+v Paste システムのクリップボードからテキストを貼り付けます
<Ctrl+v> Paste システムのクリップボードからテキストを貼り付けます
<p> PasteAfter カーソルの後ろにローカル クリップボードの内容を書き込みます。
<P> PasteBefore カーソルの前にローカル クリップボードの内容を書き込みます。
<#> PrependAndAccept 入力された文字を先頭に挿入し、行を受け入れます。
Ctrl+y Redo 元に戻した操作をやり直します
<Ctrl+y> Redo 元に戻した操作をやり直します
<.> RepeatLastCommand 最後の変更コマンドを繰り返します。
<c,l> ReplaceChar 現在の文字を入力された次の文字セットに置き換えます。
<c,Spacebar> ReplaceChar 現在の文字を入力された次の文字セットに置き換えます。
<r> ReplaceCharInPlace 現在の文字を 1 文字だけと置き換えます。
Ctrl+t SwapCharacters 現在の文字と現在の文字の前にある文字を入れ替えます。
<Ctrl+t> SwapCharacters 現在の文字と現在の文字の前にある文字を入れ替えます。
Ctrl+z Undo 前の編集を元に戻します
<Ctrl+z> Undo 前の編集を元に戻します
<u> Undo 前の編集を元に戻します
<U> UndoAll この行のすべてのコマンドを元に戻します。
<Enter> ViAcceptLine 行を受け入れ、Vi の挿入モードに切り替えます。
Ctrl+d ViAcceptLineOrExit 行が空の場合は終了し、それ以外の場合は行を入力として受け入れます。
<Ctrl+d> ViAcceptLineOrExit 行が空の場合は終了し、それ以外の場合は行を入力として受け入れます。
<o> ViAppendLine 現在の行に新しい複数行の編集モード行を追加します。
<d,B> ViBackwardDeleteGlob 空白で区切られた前の単語の先頭まで逆方向に削除します。
<B> ViBackwardGlob 空白で区切られた前の単語の先頭にカーソルを移動します。
<c,B> ViBackwardReplaceGlob 空白で区切られた前の単語の先頭まで逆方向に削除し、挿入モードに移行し
ます。
<c,0> ViBackwardReplaceLine カーソルの左の行と先頭までのすべてを置き換えます。
<c,^> ViBackwardReplaceLineToFirstChar カーソルの左の行と、1 文字を除いて行の先頭まで置き換えます。
<c,b> ViBackwardReplaceWord 前の単語を置き換えます。
<d,%> ViDeleteBrace カーソルと対応するかっこの間にあるすべての文字を削除します。
<d,E> ViDeleteEndOfGlob 空白で区切られたこの単語の末尾まで削除します。
<d,W> ViDeleteGlob 空白で区切られた現在の単語を削除します。
<d,t> ViDeleteToBeforeChar 指定した文字まで削除します。
<d,T> ViDeleteToBeforeCharBackward 指定した文字まで削除します。
<d,f> ViDeleteToChar 指定した文字まで削除します。
<d,F> ViDeleteToCharBackward 指定した文字まで後方に削除します。
<I> ViInsertAtBegining 行の先頭にカーソルを移動し、挿入モードに切り替えます。
<A> ViInsertAtEnd 行の末尾にカーソルを移動し、挿入モードに切り替えます。
<O> ViInsertLine 現在の行の前に新しい複数行の編集モード行を挿入します。
<a> ViInsertWithAppend 挿入モードに切り替え、現在の行の位置に追加します。
<s> ViInsertWithDelete 現在の文字を削除し、挿入モードに切り替えます。
<J> ViJoinLines 現在の複数行の編集モード行を次の行と結合します。
<c,%> ViReplaceBrace 現在のかっこ文字と対応する文字の間にあるすべての文字を置き換えます。
<c,E> ViReplaceEndOfGlob 空白で区切られた単語の末尾まで削除し、挿入モードに移行します。
<c,e> ViReplaceEndOfWord 空白と一般的な区切り記号で区切られた単語の末尾まで削除し、挿入モード
に移行します。
<c,W> ViReplaceGlob 空白で区切られた次の単語の先頭まで削除し、挿入モードに移行します。
<S> ViReplaceLine 現在の行を、入力された次の文字セットで置き換えます。
<c,c> ViReplaceLine 現在の行を、入力された次の文字セットで置き換えます。
<c,t> ViReplaceToBeforeChar 指定した文字まで置換します。
<c,T> ViReplaceToBeforeCharBackward 指定した文字まで置換します。
<c,f> ViReplaceToChar 指定した文字まで削除します。
<c,F> ViReplaceToCharBackward 指定した文字まで置換します。
<C> ViReplaceToEnd カーソル位置から行の末尾までの文字を置き換えます。
<c,$> ViReplaceToEnd カーソル位置から行の末尾までの文字を置き換えます。
<R> ViReplaceUntilEsc エスケープが入力されるか行が受け入れられるまで、現在の文字を置き換え
ます。
<c,w> ViReplaceWord 現在の単語を置き換えます。
<y,0> ViYankBeginningOfLine カーソルの前の文字をローカル クリップボードに配置します。
<y,E> ViYankEndOfGlob カーソル位置から空白で区切られた次の単語の末尾までの文字をローカル ク
リップボードに配置します。
<y,e> ViYankEndOfWord カーソル位置から、空白と一般的な区切り文字で区切られた次の単語の末尾
までの文字をローカル クリップボードに配置します。
<y,h> ViYankLeft カーソルの左側の文字をローカル クリップボードに配置します。
<y,y> ViYankLine 現在の行のすべての文字をローカル クリップボードに配置します。
<y,W> ViYankNextGlob カーソル位置から空白で区切られた単語の末尾までのすべての文字をローカ
ル クリップボードに配置します。
<y,w> ViYankNextWord カーソル位置から、空白と一般的な区切り文字で区切られた単語の末尾まで
のすべての文字をローカル クリップボードに配置します。
<y,%> ViYankPercent 対応するかっことカーソルの間のすべての文字をローカル クリップボードに
配置します。
<y,B> ViYankPreviousGlob カーソル位置の前から空白で区切られた前の単語の先頭までのすべての文字
をローカル クリップボードに配置します。
<y,b> ViYankPreviousWord カーソル位置の前から、空白と一般的な区切り文字で区切られた前の単語の
先頭までのすべての文字をローカル クリップボードに配置します。
<y,l> ViYankRight カーソル位置にある文字をローカル クリップボードに配置します。
<y,Spacebar> ViYankRight カーソル位置にある文字をローカル クリップボードに配置します。
<y,$> ViYankToEndOfLine カーソル位置とその後にあるすべての文字をローカル クリップボードに配置
します。
<y,^> ViYankToFirstChar カーソルの前にある空白でない最初の文字までのすべての文字をローカル ク
リップボードに配置します。
カーソル移動の機能
=========
Key Function Description
--- -------- -----------
Ctrl+LeftArrow BackwardWord カーソルを現在の単語または前の単語の先頭に移動します
<Ctrl+LeftArrow> BackwardWord カーソルを現在の単語または前の単語の先頭に移動します
Home BeginningOfLine カーソルを行頭に移動します
<Home> BeginningOfLine カーソルを行頭に移動します
End EndOfLine カーソルを行末に移動します
Ctrl+] GotoBrace 対応するかっこに移動します
<Ctrl+]> GotoBrace 対応するかっこに移動します
<|> GotoColumn カーソルを所定の列に移動します。
<^> GotoFirstNonBlankOfLine 最初の空白以外の文字にカーソルを移動します。
<_> GotoFirstNonBlankOfLine 最初の空白以外の文字にカーソルを移動します。
<End> MoveToEndOfLine 行末に移動します。
<$> MoveToEndOfLine 行末に移動します。
<g,g> MoveToFirstLine MoveToFirstLine
<G> MoveToLastLine MoveToLastLine
Ctrl+RightArrow NextWord カーソルを次の単語の先頭に移動します
<Ctrl+RightArrow> NextWord カーソルを次の単語の先頭に移動します
<e> NextWordEnd カーソルを次の単語の末尾まで移動します。
<b> ViBackwardWord 空白と一般的な区切り文字で区切られた前の単語の先頭まで逆方向に削除し、挿入モ
ードに移行します。
<E> ViEndOfGlob 空白で区切られたこの単語の末尾にカーソルを移動します。
<%> ViGotoBrace 対応するかっこにカーソルを移動します。
<W> ViNextGlob 空白で区切られた次の単語の先頭にカーソルを移動します。
<w> ViNextWord 空白と一般的な区切り文字で区切られた次の単語の先頭にカーソルを移動します。
履歴機能
====
Key Function Description
--- -------- -----------
DownArrow NextHistory 履歴の次の項目で入力を置き換えます
<DownArrow> NextHistory 履歴の次の項目で入力を置き換えます
<j> NextHistory 履歴の次の項目で入力を置き換えます
<+> NextHistory 履歴の次の項目で入力を置き換えます
UpArrow PreviousHistory 履歴の前の項目で入力を置き換えます
<UpArrow> PreviousHistory 履歴の前の項目で入力を置き換えます
<k> PreviousHistory 履歴の前の項目で入力を置き換えます
<-> PreviousHistory 履歴の前の項目で入力を置き換えます
Ctrl+r ViSearchHistoryBackward 履歴を逆方向に検索する新しい検索を開始します。
</> ViSearchHistoryBackward 履歴を逆方向に検索する新しい検索を開始します。
<Ctrl+r> ViSearchHistoryBackward 履歴を逆方向に検索する新しい検索を開始します。
コンプリート機能
========
Key Function Description
--- -------- -----------
Ctrl+Spacebar PossibleCompletions 入力を変更せずに入力候補を表示します
<Ctrl+Spacebar> PossibleCompletions 入力を変更せずに入力候補を表示します
<Tab> TabCompleteNext 次の入力候補を使用して入力を補完します
<Shift+Tab> TabCompletePrevious 前の入力候補を使用して入力を補完します
Tab ViTabCompleteNext vi に固有のクリーンアップを実行後に TabCompleteNext を呼び出します。
Shift+Tab ViTabCompletePrevious vi に固有のクリーンアップを実行後に TabCompletePrevious を呼び出します。
その他の機能
======
Key Function Description
--- -------- -----------
Ctrl+l ClearScreen 画面をクリアし、画面の先頭に現在の行を再描画します
<Ctrl+l> ClearScreen 画面をクリアし、画面の先頭に現在の行を再描画します
<0> DigitArgument 他の関数への数値引数を開始または累算します
<1> DigitArgument 他の関数への数値引数を開始または累算します
<2> DigitArgument 他の関数への数値引数を開始または累算します
<3> DigitArgument 他の関数への数値引数を開始または累算します
<4> DigitArgument 他の関数への数値引数を開始または累算します
<5> DigitArgument 他の関数への数値引数を開始または累算します
<6> DigitArgument 他の関数への数値引数を開始または累算します
<7> DigitArgument 他の関数への数値引数を開始または累算します
<8> DigitArgument 他の関数への数値引数を開始または累算します
<9> DigitArgument 他の関数への数値引数を開始または累算します
Ctrl+Alt+? ShowKeyBindings すべてのキー バインドを表示します
Escape ViCommandMode VI のコマンド モードに切り替えます。
<v> ViEditVisually 現在のコマンド行で $env:VISUAL または $env:$EDITOR によって指定された、コンソールと互換性の
あるエディターを起動します。
<i> ViInsertMode 挿入モードに切り替えます。
検索機能
====
Key Function Description
--- -------- -----------
F3 CharacterSearch 1 文字を読み取り、その文字が次に出現する位置にカーソルを移動します
<F3> CharacterSearch 1 文字を読み取り、その文字が次に出現する位置にカーソルを移動します
Shift+F3 CharacterSearchBackward 1 文字を読み取り、その文字が前に出現する位置にカーソルを移動します
<Shift+F3> CharacterSearchBackward 1 文字を読み取り、その文字が前に出現する位置にカーソルを移動します
<;> RepeatLastCharSearch 最後に記録された文字の検索を繰り返します。
<,> RepeatLastCharSearchBackwards 最後に記録された文字の検索を逆方向に繰り返します。
<n> RepeatSearch 直前の検索を繰り返します。
<N> RepeatSearchBackward 直前の検索を逆方向に繰り返します。
<f> SearchChar 指定した文字が次に出現する位置に移動します。
<F> SearchCharBackward 指定した文字が 1 つ前に出現した位置に移動します。
<T> SearchCharBackwardWithBackoff 指定した文字の前の出現箇所に移動し、1 文字進みます。
<t> SearchCharWithBackoff 指定した文字が次に出現する位置の 1 文字前に移動します。
Ctrl+s SearchForward 検索文字列の入力を求め、AcceptLine と同時に検索を開始します。
<?> SearchForward 検索文字列の入力を求め、AcceptLine と同時に検索を開始します。
<Ctrl+s> SearchForward 検索文字列の入力を求め、AcceptLine と同時に検索を開始します。
ユーザー定義の機能
=========
Key Function Description
--- -------- -----------
LeftArrow ViBackwardChar ViBackwardChar
<LeftArrow> ViBackwardChar ViBackwardChar
<Backspace> ViBackwardChar ViBackwardChar
<h> ViBackwardChar ViBackwardChar
RightArrow ViForwardChar ViForwardChar
<RightArrow> ViForwardChar ViForwardChar
<Spacebar> ViForwardChar ViForwardChar
<l> ViForwardChar ViForwardChar