- 优化了补全过滤。
- 在
$PSCompletions
中添加了部分属性供hooks
使用,以提升解析速度。 - 修复了后台作业可能导致补全报错的问题。
- 其他修复与优化。
- 修复了当选项补全已使用,在下次补全时没有被过滤掉的问题。
- 支持以
=
结尾的选项直接获取后续补全项。- 需要相关补全定义。
- 优化了 json 补全文件的属性结构和解析。
- 这对于补全文件有一个小的破坏性更新。
- 因此,
PSCompletions
模块更新完成后,请运行psc update * --force
命令更新补全。
- 简化特殊符号(
»?!
)的显示规则。 - 添加了更多的内置边框主题。
- 其他修复与优化。
- 修复了当配置项
enable_tip
设置为 0 时,过滤补全会导致报错的问题,减少了补全菜单闪烁的问题。
- 优化模块版本迁移
- 对于语言为
zh-CN
或设置为zh-CN
的用户,之前默认会使用 Gitee 源https://gitee.com/abgox/PSCompletions/raw/main
- 但是 Gitee 源经常将版本号文件(如
5.2.2
) 或者 16 位的 Guid 当做违规内容,这会让PSCompletions
的功能受限。 - 因此,现在使用
https://abgox.github.io/PSCompletions
作为模块和补全更新的默认首选源。 - 现在尝试的顺序是:
https://abgox.github.io/PSCompletions
https://gitee.com/abgox/PSCompletions/raw/main
https://github.com/abgox/PSCompletions/raw/main
- 优化菜单的显示,让菜单项和命令帮助的显示更合理。
- 优化 PowerShell 内置命令的帮助提示显示效果。
- 修复模块更新后可能导致所有配置项被重置的问题。
- 其他修复与优化。
- 修复了由于解析补全时的错误导致部分补全项缺失的问题。
- 其他的优化和修复。
- 为命令
psc update *
添加一个选项--force
。 - 不再使用过滤模式获取补全,而是将命令补全解析为树形对象并缓存,大幅度提高补全性能。
- 扩展补全排序功能,现在,不是通过
psc add
添加的补全也会尝试通过历史命令记录自动排序。 - 为边框线条添加一种样式
bold_line_rect_border
。通过命令psc menu line_theme bold_line_rect_border
使用它。 - 修改了默认符号(
?!»
),以避免特殊字符导致的渲染问题。 - 优化了补全菜单在各种宽高下的终端窗口的显示效果。
- 因为不再使用过滤模式获取补全,
hooks
的生效节点延后,最后处理补全项,灵活性更强。 - 将
disable_hooks
配置项替换为enable_hooks
。 - 修复了
CompletionPredictor
模块引起的多次更新确认的问题。 - 修复了在
Windows PowerShell
中,补全菜单显示错位以及其他兼容性问题 - 修复了命令提示信息自适应换行没有充分利用终端宽度的问题。
- 对于 Scoop 应用清单,现在可以在安装逻辑中直接创建一个内容为
{}
的 data.json 文件。 - 其他的优化和修复。
- 修复了在
v5.1.3
中,混合使用PowerShell
和Windows PowerShell
导致边框样式被意外更改的问题。
- 修复拥有
hooks.ps1
的补全命令的动态补全不生效的问题。 - 当后续模块需要更新时,会尝试多种更新方式。
- 其他的优化和修复。
- 由于未来的 Windows Terminal 的变化,将导致在补全菜单中无法正常显示 😄🤔😎,因此这三个默认特殊符号将改变。
- 相关的 issue: microsoft/terminal#18242
- 目前 Windows Terminal 可用,Windows Terminal Preview 不可用。
- PSCompletions 不会自动替换它们,你需要手动运行命令
psc reset menu symbol
来替换它们。 - 变化如下:
😄
=>→
🤔
=>?
😎
=>↓
- 修复了配置修改后不生效的问题。
- 其他的优化和修复。
- 修复了
order.json
解析压缩导致补全报错的问题。 - 其他的优化和修复。
- 添加方法
$PSCompletions.argc_completions()
用于 argc-completions。 - 优化了模块目录结构,将不重要的临时文件统一放置到
temp
目录下。 - 减少不必要的重复解析,让第二次及之后的补全更快。
- 其他的优化和修复。
- 修复了当切换语言后,帮助信息没有立即更换的问题。
- 修复了
reset
子命令的一些问题。 - 现在,当下载/更新补全时,所有 json 文件将被压缩。
- 修复初始化错误。
- 修复了目录路径补全没有尾部路径分隔符的问题
- 其他的优化和修复。
- 在
$PSCompletions
中添加一个方法return_completion
用于hooks.ps1
。 - 其他的优化和修复。
- 修复
psc rm *
命令会重置所有配置项的问题。 - 其他的优化和修复。
- 修复
psc
子命令运行时的报错。 - 其他的优化和修复。
- 移除不必要的文件 I/O 操作。
- 其他的优化和修复。
- 修复版本更新后
psc
没有正常添加的问题。
-
减少文件 I/O 操作,优化初始化方法,提升首次加载速度。
- 移除每个补全目录下的 alias.txt 文件,使用 data.json 文件存储数据。
-
将配置数据文件 config.json 合并到 data.json 中。
- 注意: 如果使用了 scoop 去安装
PSCompletions
,请检查应用清单(manifest)中的 persist 是否更新为 data.json。
- 注意: 如果使用了 scoop 去安装
-
修改了几乎所有配置项的名称。
- 配置项名称的修改,不影响正常使用,在更新版本后,也会自动迁移旧的配置项到新的配置项。
- 比如:
update
=>enable_completions_update
module_update
=>enable_module_update
menu_show_tip
=>enable_tip
- ...
-
移除了两个配置项:
github
和gitee
。- 如果需要自定义地址,请使用
url
配置项。 psc config url <url>
- 如果需要自定义地址,请使用
-
其他的优化和修复。
- 当启用
menu_is_prefix_match
时,公共前缀提取后的输入可能会导致错误,现在已修复
- 修复一个方法(
show_module_menu
)的参数类型转换错误
- 添加一个配置项
menu_is_loop
, 控制是否循环显示菜单,默认值为1
- 禁用它:
psc menu config menu_is_loop 0
- 禁用它:
- 优化旧版本的迁移逻辑
- 修复在
Windows PowerShell
中的模块更新问题 - 修复补全动态排序失效的问题
- 修复版本号对比的问题
- 为了避免版本对比错误,此版本号由
4.2.10
更改为4.3.0
- 为了避免版本对比错误,此版本号由
- 修复一些问题
- 优化部分逻辑,提升性能
- 修复一个触发边界情况导致渲染错误的问题
-
PSCompletions
模块会占用两个全局命名,$PSCompletions
(变量) 和PSCompletions
(函数)- 现在,它们都为只读,强行覆盖会报错,防止误操作导致模块失效
- 但
PSCompletions
(函数) 可以通过配置修改函数名
-
添加一个配置项
function_name
, 默认值为PSCompletions
- 设置:
psc config function_name <name>
- 使用场景:
- 当你或其他模块需要定义一个函数,名字刚好也必须为
PSCompletions
时 - 你可以通过
function_name
将本模块的函数修改为一个不冲突的名字
- 当你或其他模块需要定义一个函数,名字刚好也必须为
- 需要注意:
PSCompletions
(函数) 可以通过配置修改,但$PSCompletions
(变量) 是无法修改的- 当你需要定义一个变量,名字刚好也必须为
$PSCompletions
- 无法解决,要么你不使用
PSCompletions
模块,要么给你要定义的变量改个名字
- 设置:
-
对 PowerShell 内置命令的 ToolTip 提示信息简单处理,优化显示
-
当菜单显示后,输入字符进行过滤不再更改菜单的宽度
-
修复了可以设置一个已存在的命令为别名的bug
-
优化逻辑运算,移除一些多余的运算
- 修复补全项列表为空的bug
- 如果使用
Windows PowerShell
,且使用了命令行主题(如: oh-my-posh),当补全菜单显示在上方时,可能会导致当前行附近的文字及图标错乱- 解决方案:
- 禁用命令行主题
- 尽量让补全菜单显示在下方(只要当前行在窗口中部以上即可)
- 不要使用
Windows PowerShell
,直接使用PowerShell
Windows PowerShell
真的很差,小问题总是很多
- 解决方案:
- 如果菜单启用了前缀匹配(
menu_is_prefix_match
),当有公共前缀时,只提取补全的值 - 优化补全更新的逻辑
- 修复了因为一个代码文件使用了 LF 换行符导致
Windows PowerShell
模块加载错误的问题- 对于源代码文件,将 LF 换行符替换为 CRLF 换行符,UTF-8 编码替换为 UTF-8-BOM 编码
- 修复了非 Windows 环境的初始化导入缺失的问题
- 更改源代码文件目录结构
- 修复特定补全的
menu_show_tip
配置无效的问题 - 修复在过滤补全时,菜单渲染错误的问题
- 当使用
psc update *
更新补全后,不再立即检查更新
- 修复新版本迁移时的一个小问题
-
添加了三个
menu
配置-
menu_trigger_key
: 默认值为Tab
, 用于设置补全菜单的触发按键- 设置:
psc menu config menu_trigger_key <key>
- 设置:
-
menu_enhance
: 默认值为1
, 用于设置是否启用补全菜单增强功能- 禁用它:
psc menu config menu_enhance 0
- 开启后,
PSCompletions
会拦截所有补全,并使用PSCompletions
提供的补全菜单渲染补全 - 比如,
PowerShell
中的Get-*
,Set-*
等命令都会使用PSCompletions
提供的补全菜单渲染补全 - 需要注意,此配置项生效的前提是启用了
menu_enable
- 关于菜单增强
- 禁用它:
-
menu_show_tip_when_enhance
: 默认值为1
, 设置不是通过psc add
添加的补全,是否显示命令提示信息- 禁用它:
psc menu config menu_show_tip_when_enhance 0
- 和
menu_enhance
一起使用
- 禁用它:
-
-
解决了多字节文字可能导致菜单出现部分渲染错误的问题
- 这配合
menu_enhance
很有用 - 比如,输入
cd
命令按下Tab
触发补全,即使路径补全中有中文等多字节文字,菜单也不会有渲染问题
- 这配合
-
补全提示信息支持根据可用宽度自动换行
- 为了体验更好,
menu_tip_follow_cursor
配置项的默认值从0
修改为1
- 为了体验更好,
-
重构代码,调整源代码文件目录结构,提取公共代码
-
使用多线程优化性能,移除一些多余的执行语句
-
修复一些其他问题
-
整理代码
- 现在
Windows PowerShell
也可以使用模块提供的补全菜单了- 不过由于渲染问题,补全菜单的边框样式无法自定义
- 修复一些其他问题
- 调整源代码文件目录结构
- 整理代码
- 添加两个命令: 添加/移除所有补全
psc add *
psc rm *
- 优化
common_options
的逻辑处理 - 修复模块更新的问题
- 调整源代码文件目录结构
- 整理代码
- 将
ForEach-Object
替换为foreach
ForEach-Object
在一些特殊情况下的结果不符合预期
- 整理代码
- 一个默认颜色配置改错了,修复一下
- 修复了关于补全特殊配置的一些问题
- 修复了因为存在缓存导致配置修改后无法立即生效的问题
- 给
reset
命令添加completion
子命令,用于重置(移除)补全的特殊配置 - 修复了一些其他问题
- 修复了当补全列表滚动时,补全提示信息、过滤区域、状态区域闪烁的问题
- 修复了一些其他的小问题
- 修复了一个因为修改终端输出编码导致提示信息显示错误的问题
- 必须先导入
PSCompletions
模块,然后再修改终端输出编码,否则还是会显示错误
- 必须先导入
- 将
menu_tip_cover_buffer
这个配置的默认值从0
修改为1
- 表示默认情况下,菜单提示信息会覆盖缓冲区内容,主要是当提示信息显示在上方时,会覆盖掉上方所有内容,这会看起来背景更简洁
- 当然,当补全菜单消失后,覆盖的内容会恢复
- 你也可以禁用它(
psc menu config menu_tip_cover_buffer 0
)
- 修复了一些其他的小问题
- 一个测试环境的配置没有及时删除,修复一下
- 一个默认配置的颜色写错了,修复一下
-
如果你当前使用的
PSCompletions
模块需要管理员权限,你应该删除PSCompletions
模块,然后以用户权限安装最新版的模块。- 完整的模块安装命令:
Install-Module PSCompletions -Scope CurrentUser
- 完整的模块安装命令:
-
4.0.0 版本重构了整个模块,解决了许多不合理的地方,所以完全不兼容旧版本的配置和补全
- 性能优化:
- 提升了模块加载速度
- 提升了补全响应速度
- 补全菜单:
- 补全菜单完全重写,菜单渲染的稳定性大幅提高,从根本上解决了许多渲染 bug
- 补全菜单新增了许多的配置项,你可以自行通过触发补全以及提示信息查看
- 比如:
menu_show_tip
, 它可以控制补全提示信息是否显示,如果你对命令足够熟悉,建议禁用补全提示信息 - 此配置也可以单独给某一个补全设置,参考
psc completion
下的命令
- 补全别名:
- 现在补全别名支持多个,你可以随意添加。理论上,你可以添加无数个别名
- 比如,你可以添加
.\scoop.ps1
这样的别名,这在有些时候比较有用
- 补全文件和模块解耦
- 现在可以只编写 json 文件去新增/更新/翻译一个补全,不需要涉及到代码(如果需要使用到 hooks 除外)
- 同时使用了 json schema 控制 json 文件的类型,这让想要为仓库添加补全的贡献者创建 PR 的难度大幅降低
- 比如你觉得某一个命令的描述不够完善,你也可以修改它的 json 文件后之后,提交一个 PR
- 语言:
- 现在从模块层面,支持任何语言,模块会根据语言配置以及每一个补全的
config.json
文件来决定语言 - 这意味着以后可以添加更多语言的支持,只需要编写对应的 json 文件即可
- 现在从模块层面,支持任何语言,模块会根据语言配置以及每一个补全的
- 其他:
- 新增了一些按键映射,你现在可以通过许多种按键方式在补全菜单中选择补全项,你可以选择一种适合自己的。
选择上一项 选择下一项 Up
Down
Left
Right
Shift + Tab
Tab
Shift + Space
Space
Ctrl + u
Ctrl + d
Ctrl + p
Ctrl + n
- 现在符号被放在了补全项的后面,补全提示信息中不再出现符号
- ...
- 新增了一些按键映射,你现在可以通过许多种按键方式在补全菜单中选择补全项,你可以选择一种适合自己的。
- 性能优化: