1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PowerShellで 行編集モードを Emacsに設定する

Last updated at Posted at 2021-09-25

はじめに

デフォルトの PowerShellの設定では Ctrl+pやCtrl+n でコマンド履歴が追えなかったり、Ctrl+a や Ctrl+e で行頭/行末に飛べなかったりとストレスを感じたため、これらをEmacsライクな行編集モードに設定するための方法について調べた

PowerShell で Emacs風キーバインドを設定する

上記のEmacs風キーバインドは PoserShell 上で Set-PSReadLineOption -BellStyle None -EditMode Emacs を設定することで実現できる。

ただしこれだけでは、シェルを閉じたときに設定値が失われてしまうので、.bashrc 的なものに設定情報を保存しておく必要がある

PowerShell で .bashrc のようなものを設定する

PowerShellでは以下の環境変数にプロファイル情報のパスが記載されている。

$Profile.AllUsersAllHosts
$Profile.AllUsersCurrentHost
$Profile.CurrentUserAllHosts
$Profile.CurrentUserCurrentHost

今回は、$Profile.CurrentUserAllHosts を使用して以下のように設定した。

echo '$script = "$Home\profile.ps1" 
if (Test-Path $script) { 
  . $script 
}' > $Profile.CurrentUserAllHosts

echo "Set-PSReadLineOption -BellStyle None -EditMode Emacs" >> $Home\profile.ps1

. $PROFILE.CurrentUserAllHosts を実行するかPowerShellを再起動することで設定が反映される。

権限エラーで上記スクリプトが実行できない場合は、ExecutionPolicy を設定する必要がある。

今回は RemoteSigned (ローカルのスクリプトは実行できるが、インターネットからダウンロードした外部のスクリプトについては署名が必要)を設定した。

Set-ExecutionPolicy RemoteSigned

参考文献

https://qiita.com/smicle/items/0ca4e6ae14ea92000d18
https://qiita.com/alchemist/items/e6706cd425f8f5e5032e

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?