Helix 是一种模态文本编辑器,内置支持多选、语言服务器协议 (LSP)、tree-sitter 以及对调试适配器协议 (DAP) 的实验性支持。
现已发布 23.03 版本,以下是该版本的一些 Highlights
Soft-wrap 软包装
Soft-wrap 分解行以适合视图,无需在文本中插入实际的换行符(所谓的“hard-wrapping”)。对于阅读和编辑行特别长的文档或代码很有用。使用 editor.soft-wrap.enable 键在配置中启用软包装:
Soft-wrap 是在 Helix 代码库中的新“虚拟文本”API 之上实现的第一个功能。虚拟文本 API 允许在不干扰定位和修改的情况下装饰和操作文档中的实际文本。
Inlay hints 镶嵌提示
Inlay hints 是最新 LSP 规范中的一项新功能。语言服务器可以为编辑器提供在文档中显示的提示。在上面的示例中,rust-analyzer 为变量和中间表达式以及函数调用中的参数名称提供了类型提示。
可以使用 lsp.display-inlay-hints
键在您的配置中启用嵌入提示。
Initial support for snippets 对片段的初始支持
LSP 片段是语言服务器为编辑器提供更复杂补全的一种方式。语言服务器可以指定在完成(制表位)、占位符值等中放置光标的位置。
Helix 现在初步支持 LSP 完成,为未来的工作留下更高级的代码片段功能,如虚拟占位符、多个制表位和变量替换。
Dynamic workspace symbol picker 动态工作区符号选择器
工作区符号选择器 ( <space>S
) 是 LSP 驱动的功能,用于在项目中查找符号。但是,大型项目可能有很多符号,因此此符号选择器通常不会一次加载所有符号。
工作区符号选择器已在此版本中重新设计,以便在选择器中键入时使用新查询动态重新请求符号。这让语言服务器缩小了符号的数量,并且只告诉 Helix 与搜索相关的符号。
这还修复了与某些语言服务器的兼容性,这些语言服务器返回没有查询( gopls
、 pyright
、 clangd
)或有限结果( rust-analyzer
)的空符号。
此重构中引入的“动态选择器”可能会在未来使其他选择器受益,例如允许全局搜索选择器 ( <space>/
) ,在更改查询时即时更新。
版本控制 HEAD 状态行元素
添加了一个新的状态行元素,它显示版本控制 HEAD。通过在 left
、 center
或 right
端的配置的 editor.statusline
部分中引入 "version-control"
元素,将其添加到状态行
Enhanced keyboard protocol 增强型键盘协议
启用了对增强型键盘协议的支持。支持该协议的终端(Kitty、WezTerm)现在可以向 Helix 发送明确的键码,启用以前无法绑定的键组合,如 C-/
、 C-h
或 S-backspace
。
对于支持该协议的终端,此功能开箱即用。
Runtime directory refactor 运行时目录重构
Helix 将 tree-sitter 解析器和查询、主题和导师文件等文件保存在一个特殊的“运行时”目录中。该目录通常由您的包管理器安装,不应手动修改。
现在支持多个运行时目录,可以保持包管理器安装的运行时文件不变,同时向本地运行时目录添加新的 tree-sitter 解析器和查询。在 Unix 系统上,可以将文件添加到 ~/.config/helix/runtime
目录,该目录优先于包管理器安装的运行时目录。
查看 23.03 的更新日志( changelog ),了解有关此版本中所有更改的完整详细信息。