Emacs を使っているとコマンドラインでも Emacs 風のキーバインドを使いたくなる。そうでなくても Linux や Mac のターミナルで bash や zsh などを使っていれば, つい PowerShell でも同様にコマンドラインを編集したくなる。WSL (Windows Subsystem for Linux) を使えばいいのだが, PowerShell を使いたい場合も多い。ということで PowerShell でも Emacs 風キーバインドを使いたいと思ったらすでに用意されていた。
ちなみに, これを書いている 2022年3月の時点で PowerShell は 7.2.1 を使っている。これだと PSReadLine の設定で Emacs 風のキーバインドになる。[Win]+x で管理者権限で PowerShell を起動して Install-Module PSRealLine -Force とタイプすることで PSReadLine をインストールできる。ちなみに PowerShell は version 5 系統と version 7 系統が同居できるみたいで, スタートメニューでも PowerShell (ver. 7) と Windows PowerShell (ver. 5) がある。私の場合は最近まで必要に迫られたとき以外は Windows を使っていなかったので ver. 7 の方を使うことにした。この2つでは設定ファイルも違うが, ver. 7 の方だと
\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
で設定することになるみたい。ネットの情報を見ると
Import-Module PSReadLine Set-PSReadlineOption -EditMode Emacs Set-PSReadlineKeyHandler -Key Ctrl+d -Function DeleteCharと書くことで Emacs 風のキーバインドになり, かつ Ctrl-d を
Delete Char
にできるはずだが, 私の場合は PowerShell を再起動するとデジタル署名されていないから実行しないよと言われる。そこで, PowerShell 上から Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
を実行すると読み込んでくれるようになった。