补全上下文
TIP
- 补全上下文是 PSCompletions 补全系统的核心概念
- 理解它有助于更好地理解补全菜单的构建方式和 补全预测符号 的含义
什么是补全上下文
每个命令都有自己的 补全上下文,它定义了该命令的补全菜单中会出现哪些内容。
补全上下文由两部分组成:
当你按下触发键时,PSCompletions 会根据当前命令的补全上下文来构建补全菜单。
触发键默认为
Tab,可通过psc menu config trigger_key <Key>自定义
上下文的继承规则
如果一个命令 没有自己的补全上下文,它会自动使用 上一个命令的补全上下文
以 git 命令为例
txt
PS> git
commit ~ # 子命令
switch ~ # 子命令
config ~ # 子命令
add ~ # 子命令
var # 子命令
--version ? # 选项
--help ? # 全局选项选用 config ~ 后,切换到 config 的上下文
txt
PS> git config
get ~ # 子命令
set ~ # 子命令
unset ~ # 子命令
list # 子命令
--global ? # 选项
--help ? # 全局选项上下文的切换方式
- 补全菜单中的每个补全项都可能携带 补全预测符号
- 它会指示你选用该补全项后补全上下文会如何变化
| 符号 | 配置项 | 上下文变化 |
|---|---|---|
~ | continue | 切换到新的上下文 |
? | stay | 留在当前上下文 |
! | input | 留在当前上下文,可能需要手动输入一个值 |
选用 switch ~ 后,会切换到 switch 的上下文
txt
PS> git switch
main # 分支 (来源于 hooks.ps1 动态解析)
develop # 分支 (来源于 hooks.ps1 动态解析)
--conflict ~ # 选项
--create ! # 选项 (别名 -c)
-c ! # 选项 (别名 --create)
--force ? # 选项
--help ? # 全局选项选用 --conflict ~ 后,会切换到 --conflict 的上下文
txt
PS> git switch --conflict
merge # 预设值
diff3 # 预设值
zdiff3 # 预设值
--help ? # 全局选项