PowerShellのキーバインドをEmacs風にする【PSReadLine】

はじめに

環境は以下の通り

手順

PSReadLine を導入する

↓ソース

PowerShell を管理者権限起動して、 Install-Module PSReadLine を実行

notepad $PROFILE を実行、プロファイルに下記設定を追加

if ($host.Name -eq 'ConsoleHost')
{
    Import-Module PSReadLine

    # キーバインドをEmacs風に変更
    Set-PSReadlineOption -EditMode Emacs

    # ### (以下追加)
    # Ctrl+i をTab と同じ "Complete" に割当
    Set-PSReadLineKeyHandler -Key Ctrl+i -Function Complete
    # Ctrl+j をEnter と同じ "AcceptLine" に割当
    Set-PSReadLineKeyHandler -Key Ctrl+j -Function AcceptLine

    # Ctrl+y を "Paste" に変更
    Set-PSReadLineKeyHandler -Key Ctrl+y -Function Paste
    # Ctrl+d を "DeleteChar" に変更
    Set-PSReadLineKeyHandler -Key Ctrl+d -Function DeleteChar
    
}

  • Ctrl+y のデフォルトFunction は "Yank"
  • Ctrl+d のデフォルトFunctionは "DeleteCharOrExit"
    • DeleteCharOrExit: カーソル位置の文字を削除、空行の場合は処理を終了
    • DeleteChar : カーソル位置の文字を削除

キーバインド

キーバインドGet-PSReadlineKeyHandler で表示できる

▼カーソル移動

Key Function 内容
Ctrl+a BeginningOfLine カーソルを行頭に移動
Ctrl+e EndOfLine カーソルを行末に移動
Ctrl+f ForwardChar カーソルを 1文字前に進める
Ctrl+b BackwardChar カーソルを 1文字前に戻す

▼編集

Key Function 内容
Ctrl+d DeleteChar カーソル位置の 1文字を削除
Ctrl+h BackwardDeleteChar カーソル前の 1文字を削除
Ctrl+y Paste クリップボードの内容をペースト

▼コマンド

Key Function 内容
Ctrl+j AcceptLine Enter と同じ
Ctrl+n NextHistory コマンド履歴表示 (次の項目)
Ctrl+p PreviousHistory コマンド履歴表示 (前の項目)