⌨️

Powershellをbash風のキーバインドにする

2021/11/22に公開

概要

PowershellでCtrl+wなどが使えないのが不便だったため設定しました。
今回設定したのは以下のキーです。

キー 説明
Ctrl+d カーソル下の文字削除
Ctrl+w カーソルより前の単語削除
Ctrl+u カーソルより前の行削除
Ctrl+k カーソルより後の行削除
Ctrl+a カーソルを行頭に移動
Ctrl+e カーソルを行末に移動
Ctrl+f カーソルを左に移動
Ctrl+b カーソルを右に移動
Alt+f カーソルを次の単語へ移動
Alt+b カーソルを前の単語へ移動
Ctrl+p 前の履歴
Ctrl+n 次の履歴

準備

PSReadLine モジュールを使用します。
インストールしていない場合は以下のコマンドでインストールしてください。

Import-Module PSReadLine -Scope Local

Microsoft.PowerShell_profile.ps1(.bashrcみたいなもの)を作成していない場合は作成します。

New-Item $PROFILE

設定

$PROFILEに以下を書き込むだけです。

Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function DeleteChar
Set-PSReadLineKeyHandler -Key "Ctrl+w" -Function BackwardKillWord
Set-PSReadLineKeyHandler -Key "Ctrl+u" -Function BackwardDeleteLine
Set-PSReadLineKeyHandler -Key "Ctrl+k" -Function ForwardDeleteLine
Set-PSReadLineKeyHandler -Key "Ctrl+a" -Function BeginningOfLine
Set-PSReadLineKeyHandler -Key "Ctrl+e" -Function EndOfLine
Set-PSReadLineKeyHandler -Key "Ctrl+f" -Function ForwardChar
Set-PSReadLineKeyHandler -Key "Ctrl+b" -Function BackwardChar
Set-PSReadLineKeyHandler -Key "Alt+f" -Function NextWord
Set-PSReadLineKeyHandler -Key "Alt+b" -Function BackwardWord
Set-PSReadLineKeyHandler -Key "Ctrl+p" -Function PreviousHistory
Set-PSReadLineKeyHandler -Key "Ctrl+n" -Function NextHistory

書き込んだらPowershellを再起動するか、& $PROFILE で設定ファイルを再読み込みしましょう。

補足

Get-PSReadLineKeyHandlerで現在のキーバインドを確認することができるので、これで割り当てられている関数を確認しながらすると便利

Discussion