Helix 教程:Rust 写的模态编辑器,多光标编辑与 LSP 内置,十分钟跑通
【免费下载链接】helixA post-modern modal text editor.项目地址: https://gitcode.com/GitHub_Trending/he/helix
Helix 是一个用 Rust 编写的现代终端模态编辑器,命令模式加插入模式的双模式操作类似 Vim,但把多光标编辑、Tree-sitter 语法高亮和 LSP 语言服务器支持都做了内置,打开文件即开箱可用。它适合两类人:觉得纯 Vim 缺现代功能、又嫌图形 IDE 太重的终端重度用户,以及想找一个单二进制、无插件依赖的轻量编辑器的开发者。
先说痛点:终端里写代码的两难
如果你每天在终端里干活,大概遇到过这两种情况:一种是vim裸用,没有代码跳转、没有补全、语法高亮靠插件拼凑,写 Rust 或 Go 时效率明显掉档;另一种是直接开 VS Code,但每次为了改一行配置都得起一整个 IDE,等语言服务加载完,人已经没了。
Helix 走的是中间路线:启动就是一个纯终端进程,占用极小,但语法高亮由 Tree-sitter 增量解析提供,跳转到定义、补全、诊断这些 IDE 功能通过内置的 LSP 客户端直接接上。而且它的编辑模型来自 Kakoune——多光标是一等公民,不是后来加的功能。
从零到第一次编辑:三步
- 拿到二进制。如果你只想用,各系统包管理器里直接搜
helix安装即可;想自己编译的话,克隆仓库后在helix-term目录下执行 cargo 安装:
git clone https://gitcode.com/GitHub_Trending/he/helix cd helix cargo install --path helix-term安装完成后输入hx --version能看到版本号,说明装好了。
打开一个文件试试。终端里运行
hx main.rs(换成你手边的任意代码文件)。你会看到文件内容、左侧行号栏,以及右下角的模式提示——这就是命令模式(Normal mode)。按i进入插入模式,右下角提示会变成插入模式,此时像普通编辑器一样打字;按Esc随时回到命令模式。验证高亮和 LSP 都活着。输入
hx --health <语言名>(比如hx --health rust)可以检查对应语言的服务器是否被找到。如果装了 rust-analyzer,打开 Rust 文件后光标悬停的函数按Space-k会弹出文档气泡,未使用的变量会直接标在行尾。
核心功能场景
多光标编辑:同一处改动一次做完
这是 Helix 和 Vim 最大的体验差异。在 Vim 里多光标要装插件,而 Helix 的默认设计就是"每次按键都在选区上操作",所有选区会被同时编辑。
想改一个文件里 20 个old_name?把光标放在任意一个上面,按Ctrl-d——当前词被选中;再按一次,全文所有相同词同时被选中,每个词下方都有光标。此时按i输入new_name,20 处一次改完,按Esc退出。
如果选多了,用n;可以只保留一个光标(n前加数字是保留 n 个);想反向删选,用Alt-,移除主选区。
LSP:终端里的跳转、补全与诊断
Helix 内置了完整的 LSP 客户端,不需要任何插件,只要系统里装了对应语言服务器(比如 rust-analyzer、pyright、gopls),打开文件后自动连接。
最常用的几个绑定:
gd跳转到定义,gr看引用;Ctrl-o跳回原位置- 插入模式下补全自动弹出,
Ctrl-x可手动触发 Space-k弹出悬停文档,Space-r重命名符号[d/]d在错误和警告之间跳转,Space-d打开诊断列表
改完代码按:format还能调用语言服务器格式化整个文档;如果嫌手动麻烦,在 languages.toml 里为对应语言开启auto-format,保存时自动格式化。
Tree-sitter 语法高亮:跟着语法树走的操作
高亮本身人人都见过,Helix 有意思的地方是:选区和文本对象也基于语法树。把光标放在函数的括号里,反复按Alt-o,选区会从当前 token 一层层向外扩——参数、函数体、整个函数定义,扩到合适的粒度后直接c改写或d删除。反向收缩用Alt-i。
m-m可以跳到匹配的括号,m-i-p、m-a-b这类按键选中"内侧段落""外侧括号"等文本对象。对熟悉 Vim 的人来说,这套语法感知的文本对象比按行或按词粗粒度地选要顺手得多。
模糊搜索:文件和符号都是秒开
Helix 内置了 fzf 风格的模糊匹配选择器,不用装 fzf 也不依赖外部 ripgrep:
Space-f打开文件选择器,敲几个字母模糊过滤,回车即打开Space-/全局搜索整个工作区,结果同样走模糊列表Space-b在已打开的缓冲区之间切换gd之后如果匹配项有多个,也会弹选择器让你挑
搜索还支持 fzf 语法,比如name ext:ts !test表示路径含 name、扩展名是 ts、排除 test 的文件。
三个见效快的实用技巧
- 换主题只需要一行。配置目录(Linux/macOS 为
~/.config/helix/config.toml)里写theme = "catppuccin_mocha"即可,仓库 runtime/themes/ 下自带 200 多个社区主题可以直接挑名字。不想改文件的话,运行时输入:theme 名字立刻生效。 - 行号相对化 + 自动格式化。在
config.toml的[editor]段里设line-number = "relative",离光标远的时候行号变成相对距离,跳行更直观;顺手设auto-format = true(默认就是开的)。改完配置按:config-reload立即生效,或者在编辑器内用:config-open直接打开配置文件编辑。 - 项目级配置隔离全局。在仓库根目录建
.helix/config.toml,该项目的设置会合并到全局配置之上,不同项目用不同的缩进和主题互不干扰。
生态与进阶
- 键位速查是入门第一优先级:book/src/keymap.md 列出了全部模式与绑定,建议收藏
- 语言与高亮支持看 book/src/languages.md 和 book/src/lsp.md,前者说明哪些语言自带语法和服务器配置,后者讲怎么给新语言接服务器
- 高亮查询定义在 runtime/queries/ 下,每种语言一个目录,想改某语言的高亮规则从这里入手
- 官方文档站、语言服务器配置 Wiki 和社区 Matrix 频道,入口都写在仓库 README 里,遇到
Space模式没反应的键位冲突问题,可以先查 Wiki 的终端兼容性列表
下一步建议:挑一个你最近天天改的项目,用 Helix 打开它,故意把line-number、主题、auto-format各改一遍——配置热重载的过程本身就能让你确认这套工具链是通的。
【免费下载链接】helixA post-modern modal text editor.项目地址: https://gitcode.com/GitHub_Trending/he/helix
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考