我使用 Arch Linux (Manjaro),但我开始学习 Powershell。我已经使用 从 AUR 安装了 powershell yay -S powershell
。但是,当使用 powershell ( pwsh
) 时,我发现按键绑定不起作用。按向上/向下键不会查看命令历史记录,按TAB
和ctrl-space
不会触发制表符补全。
我在 zsh 中使用 alacritty。但是,我也用 zsh 测试过,xterm pwsh
也存在同样的问题,所以我相信终端仿真器和父 shell 是不是原因,我需要自己配置按键绑定。
如何配置基本的 powershell 键绑定?
答案1
PSReadLine
PowerShell 键绑定由随附的模块控制。该模块提供各种功能,如语法着色、良好的多行体验、历史记录等(请参阅: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 }