powershellでのPSReadLineの使い方
どうも、defaultで設定されているのだが、けっこうカスタマイズすると面白いのでご参考に
デフォルトの動き
get-psreadlinekeyhandler
とすると、かなりのキーが設定されていることがわかる。ちょっと一部だけを表示するとこんな感じ
Basic editing functions
=======================
Key Function Description
--- -------- -----------
Enter AcceptLine Accept the input or move to the next line if input is missing a closing token.
Shift+Enter AddLine Move the cursor to the next line without attempting to execute the input
Backspace BackwardDeleteChar Delete the character before the cursor
Ctrl+h BackwardDeleteChar Delete the character before the cursor
Ctrl+Home BackwardDeleteLine Delete text from the cursor to the start of the line
Ctrl+Backspace BackwardKillWord Move the text from the start of the current or previous word to the cursor to the kill ring
Ctrl+w BackwardKillWord Move the text from the start of the current or previous word to the cursor to the kill ring
Ctrl+C Copy Copy selected region to the system clipboard. If no region is selected, copy the whole line
Ctrl+c CopyOrCancelLine Either copy selected text to the clipboard, or if no text is selected, cancel editing the line with CancelLine.
Ctrl+x Cut Delete selected region placing deleted text in the system clipboard
Delete DeleteChar Delete the character under the cursor
Ctrl+End ForwardDeleteLine Delete text from the cursor to the end of the line
Ctrl+Enter InsertLineAbove Inserts a new empty line above the current line without attempting to execute the input
Shift+Ctrl+Enter InsertLineBelow Inserts a new empty line below the current line without attempting to execute the input
Alt+d KillWord Move the text from the cursor to the end of the current or next word to the kill ring
Ctrl+Delete KillWord Move the text from the cursor to the end of the current or next word to the kill ring
Ctrl+v Paste Paste text from the system clipboard
Shift+Insert Paste Paste text from the system clipboard
Ctrl+y Redo Redo an undo
Escape RevertLine Equivalent to undo all edits (clears the line except lines imported from history)
Ctrl+z Undo Undo a previous edit
Alt+. YankLastArg Copy the text of the last argument to the input
このようなキーバインドが設定されていて、homeキーだとコマンドの先頭に。endキーだとコマンドの最後に
そして選択として次の部分が有用ではないかと思う。
Selection functions
===================
Key Function Description
--- -------- -----------
Ctrl+a SelectAll Select the entire line. Moves the cursor to the end of the line
Shift+LeftArrow SelectBackwardChar Adjust the current selection to include the previous character
Shift+Home SelectBackwardsLine Adjust the current selection to include from the cursor to the start of the line
Shift+Ctrl+LeftArrow SelectBackwardWord Adjust the current selection to include the previous word
Shift+RightArrow SelectForwardChar Adjust the current selection to include the next character
Shift+End SelectLine Adjust the current selection to include from the cursor to the end of the line
Shift+Ctrl+RightArrow SelectNextWord Adjust the current selection to include the next word
そして、このkeybindはwindowsの場合であり、viモードにすると、まったくviコマンドのように使えるというのが面白い。またemacsのバインディングも可能である。
なお、viの場合はwとかdとかで編集できてしまうのだが、このモードに入る場合はescを押せばいいというのがなかなかわからなかった。viモードに変更すると上のkeybindはごっそり変わるので、お気をつけて。
prediction
デフォルトでは設定されていないが
set-psreadlineoption -predictionsource history
とすると、予測で次ぎのコマンドを表示し始める。
予測が合っているのであれば→キーを押せば、確定である。
ただ、この予測を表示する色がもの凄く暗いのでよく見えない。これを設定するのは
set-psreadlineoption -colors @{inlineprediction = "darkgreen"}
とかやればok