Arch Linux で Powershell のキーバインディングを設定するにはどうすればいいですか?

Arch Linux で Powershell のキーバインディングを設定するにはどうすればいいですか?

私は Arch Linux (Manjaro) を使用していますが、Powershell を学び始めています。を使用して AUR から powershell をインストールしましたyay -S powershell。しかし、powershell ( pwsh) を使用すると、キー バインディングが機能しないことがわかりました。上/下を押してもコマンド履歴が参照されず、とを押してもTABタブctrl-space補完がトリガーされません。

私は alacritty を zsh で使用しています。しかし、テストしてもxterm pwsh同じ問題が発生するので、ターミナルエミュレータと親シェルに問題があると思われます。ない原因は不明で、キーバインディングを自分で設定する必要があることがわかりました。

基本的な PowerShell キー バインディングを構成するにはどうすればよいですか?

答え1

PSReadLinePowerShell のキー バインディングは、同梱のモジュールによって制御されます。このモジュールは、構文の色分け、複数行の操作性、履歴など、さまざまな機能を提供します (以下を参照)。https://github.com/PowerShell/PSReadLine)。

探しているのはキー ハンドラーです。

PS> Set-PSReadLineKeyHandler -Key Tab -Function Complete

サポートされている構成パラメータの完全な概要については、必ずドキュメントを確認してください。

PS> help about_PSReadLine
# Or list the key current handlers and options:
PS> Get-PSReadLineKeyHandler
PS> Get-PSReadLineOption

設定例は、git リポジトリで見つかります。https://github.com/PowerShell/PSReadLine/blob/master/PSReadLine/SamplePSReadLineProfile.ps1すべての PSReadline カスタマイズをセッション間で保持するには、PowerShell プロファイルに追加する必要があります。

PS> echo $PROFILE
/Users/megamorf/.config/powershell/Microsoft.PowerShell_profile.ps1

私の PowerShell プロファイルには通常次の内容が含まれています。

Set-PSReadLineOption -EditMode Emacs -BellStyle None
Set-PSReadLineOption -HistorySearchCursorMovesToEnd

Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward

Set-PSReadlineKeyHandler -Key Ctrl+Shift+P `
    -BriefDescription CopyPathToClipboard `
    -LongDescription "Copies the current path to the clipboard" `
    -ScriptBlock { (Resolve-Path -LiteralPath $pwd).ProviderPath.Trim() | Set-Clipboard }

関連情報