关于 . $PROFILE
TIP
. $PROFILE会重新加载 PowerShell 配置文件- 它会影响 PSCompletions 的补全菜单
- 因此,在使用
. $PROFILE后,需要重新运行psc来重新加载补全菜单 - 这是最简单直接的方式,无论你是以下哪种情况
psc menu config enable_menu 1
PSCompletions 使用以下方式来提供补全菜单
<key>是psc menu config trigger_key的值,默认值为Tab
powershellSet-PSReadLineKeyHandler -Key <Key> -ScriptBlock { # ... }然而,在使用
. $PROFILE之后PowerShell 会自动重置按键绑定
powershellSet-PSReadLineKeyHandler -Key Tab -Function TabCompleteNext同时,由于模块已经加载,模块中的相关按键绑定逻辑不再触发
最终,补全菜单相关的按键绑定因被
TabCompleteNext覆盖而失效因此,需要运行
psc来重新加载按键绑定
psc menu config enable_menu 0
- PSCompletions 使用
MenuComplete来提供补全菜单<key>是psc menu config trigger_key的值,默认值为Tab
powershellSet-PSReadLineKeyHandler -Key <Key> -Function MenuComplete - 然而,在使用
. $PROFILE之后 - PowerShell 会自动重置按键绑定powershell
Set-PSReadLineKeyHandler -Key Tab -Function TabCompleteNext - 同时,由于模块已经加载,模块中的相关按键绑定逻辑不再触发
- 最终,补全菜单相关的按键绑定因被
TabCompleteNext覆盖而失效 - 因此,需要运行
psc来重新加载按键绑定
NOTE
- 在这种情况下,你可以在
$PROFILE中显式指定按键绑定来解决问题powershellSet-PSReadLineKeyHandler -Key Tab -Function MenuComplete - 它应该在
Import-Module PSCompletions之前 - 参考 正确的导入顺序