Release 23.03 Highlights

Helix 是一款模式文本编辑器,内置支持多重选择、 语言服务器协议 (LSP)、tree-sitter,并实验性地支持调试适配器协议 (DAP)。

今天发布的是 23.03 版本。首先,衷心感谢所有参与者! 本次版本包含来自 102 位贡献者的改进。本次发布带来了一些特别实用且令人兴奋的功能, 让我们一起来看看吧。

Soft-wrap

软换行功能会将文本行自动折叠以适应视图,但不会在文本中插入实际的换行符(即所谓的“硬换行”)。 这对于阅读和编辑包含特别长行的文档或代码非常有用。您可以通过 editor.soft-wrap.enable 键在配置文件中启用软换行功能:

# ~/.config/helix/config.toml
[editor.soft-wrap]
enable = true

换行位置的启发式方法和换行指示器也可能是 configured.

软换行是基于 Helix 代码库中全新“虚拟文本”API 实现的第一个功能。虚拟文本 API 允许我们修饰 和操作文档中的实际文本,而不会影响文本的定位和修改。虚拟文本 API 为许多令人兴奋的新功能( 例如我们接下来将看到的内嵌提示)打开了大门。

内嵌提示

内嵌提示是最新 LSP 规范中的一项新功能。语言服务器可以向编辑器提供提示信息,以便在文档中显示。 在上面的示例中,rust-analyzer 为变量和中间表达式以及函数调用中的参数名称提供了类型提示。

您可以通过配置中的 lsp.display-inlay-hints 键启用内嵌提示功能。

初步支持代码片段功能

LSP 代码片段是语言服务器为编辑器提供更复杂代码补全功能的一种方式。语言服务器可以指定光标在 补全内容中的位置(制表位)、占位符值等等。Helix 现在已初步支持 LSP 代码补全功能,而更高级 的代码片段功能,例如虚拟占位符、多个制表位和变量替换,将在未来的版本中实现。

动态工作区符号选择器

工作区符号选择器(<space>S)是一项基于 LSP 的功能,用于在项目中查找符号。大型项目可能包 含许多符号,因此此符号选择器通常不会一次性加载所有符号。不过,在此版本中,工作区符号选择器已 进行了重构,以便在您输入搜索内容时动态地使用新的查询重新请求符号。这使得语言服务器能够缩小符 号范围,并仅将与搜索相关的符号告知 Helix。此次重构解决了与某些语言服务器的兼容性问题,这些 服务器在没有查询的情况下返回空符号(例如 goplspyrightclangd)或返回的结果有限 (例如 rust-analyzer)。

此次重构引入的“动态选择器”功能未来可能会惠及其他选择器,例如,允许全局搜索选择器(<space>/) 在您更改查询时动态更新结果。

版本控制 HEAD 状态栏元素

新增了一个状态栏元素,用于显示版本控制系统的 HEAD 版本。您可以通过在配置文件 的 editor.statusline 部 分的 leftcenterright 侧添加 "version-control" 元素来将其添加到状态栏中。

增强型键盘协议

337 现在已启用对增强型键盘协议的支持。支持该协议的终端(例如 Kitty、WezTerm)现在可以向 Helix 发 送明确的按键代码,从而实现以前无法绑定的组合键,例如 C-/C-hS-backspace。对于支 持该协议的终端,此功能无需任何配置即可使用。

运行时目录重构

Helix 将诸如 tree-sitter 解析器和查询文件、主题文件以及教程文件等文件保存在一个特殊的“运行时”目录中。 此目录通常由您的包管理器安装,不应手动修改。现在支持多个运行时目录,因此您可以保留包管理器安装的运行时文 件不变,同时将新的 tree-sitter 解析器和查询文件添加到本地运行时目录中。在 Unix 系统上,您可以将文件 添加到 ~/.config/helix/runtime 目录,该目录中的文件优先级高于包管理器安装的运行时目录中的文件。

总结

这些引人注目的功能只是冰山一角。请查看 23.03 更新日志,了解此版本中所有更改的完整详细信息。

欢迎加入 Matrix 空间 讨论使用和开发方面的问题,并在 GitHub 仓库 中关注 Helix 的开发进展。