PowerShellのキーバインドをEmacs風にする【PSReadLine】
はじめに
- 目的: PowerShell のキーバインドを Emacs ライクにする
環境は以下の通り
- OS: Windows 10
- PSVersion: 5.1
手順
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"- Yank : キルリング の内容をペースト
- Paste: クリップボードの内容をペースト
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 | コマンド履歴表示 (前の項目) |