いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

PSReadLineでEmacsキーバインドを使えるようにする

概要

以下、私のメモです。忘れそうなので。。

PSReadLineモジュールを使うと、PowerShellにてEmacsキーバインドを有効にすることが出来ます。

Linuxのシェル操作に慣れていると、Ctrl+m とか Ctrl+i とか Ctrl+e とか Ctrl+u とかを使いたくなります。

以下、自分の環境でうまく行った手順です。

PSReadLineを最新版に

予測 IntelliSense を利用したいので、最新版にします。

> Install-Module -Name PSReadLine -AllowPrerelease -Force

プロファイルに設定を追加

以下の内容をプロファイルに追加します。

if ($host.Name -eq 'ConsoleHost')
{
    # PSReadLineモジュールを有効に
    Import-Module PSReadLine
    # キーバインドをEmacsスタイルに
    Set-PSReadLineOption -EditMode Emacs
    # 予測Intellisenseを有効に
    Set-PSReadLineOption -PredictionSource History
    # Ctrl+i で Linux のシェルのように補完が出来るように
    Set-PSReadLineKeyHandler -Key Ctrl+i -Function Complete
    # Ctrl+f で 1単語すすめるように(予測Intellisenseを確定させる際に使える)
    Set-PSReadLineKeyHandler -Key Ctrl+f -Function ForwardWord
}

保存したら、一度Windowsターミナルとかを落として再起動します。

次起動すると、Linuxのシェルと同様のキーバインドが有効となっています。

予測 IntelliSense を使ってみる

予測 IntelliSense とは以下のようなものと記載されています。

予測 IntelliSense は、ユーザーがコマンドを正常に完了できるように、タブ補完の概念を追加したものです。 ユーザーは、ユーザーの履歴や追加のドメイン固有のプラグインからの照合予測に基づいて、完全なコマンドを検出、編集、および実行することができます。

https://docs.microsoft.com/ja-jp/powershell/module/psreadline/about/about_psreadline?view=powershell-7.2#predictive-intellisense

使い方としては以下のような感じです。

f:id:gsf_zero1:20211215161702p:plain

参考情報

docs.microsoft.com

dev.classmethod.jp

maskaw.hatenablog.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com