[ホーム]-> [emacs]-> [emacs on Windows]-> [Windows PowerShell で Emacs 風キーバインド]

Windows PowerShell で Emacs 風キーバインド

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-dDelete Char にできるはずだが, 私の場合は PowerShell を再起動するとデジタル署名されていないから実行しないよと言われる。そこで, PowerShell 上から Set-ExecutionPolicy -Scope CurrentUser RemoteSigned を実行すると読み込んでくれるようになった。