起因
我用 Neovim 几年,写过 ~200 行 Lua 配置。换电脑要折腾环境;同事抄
config 也要解释半天为什么这个插件做这个事。
听说 Helix 是 "Vim 改进版" 而且零配置就有 LSP / Treesitter / fuzzy
搜索,试一周。
与 Vim 的区别
Helix 的设计借鉴 Kakoune:先选后操(selection-first)。
Vim 是动词→名词:d w = delete word(先 delete 后选)。
Helix 是名词→动词:w d = select word(看到 selection 高亮)然后 delete。
效果差异:
- Vim:你想象 → 输命令 → 看结果(有时不对要 undo)
- Helix:每一步看到 selection 高亮 → 确认后再操作
对于复杂选择(d a ( vs d i {),Helix 的"先选"模式让人少出错。
装 + 跑
# macOS
brew install helix
# Debian / Ubuntu
sudo add-apt-repository ppa:maveonair/helix-editor
sudo apt install helix
# Arch
sudo pacman -S helix
hx --version
hx myfile.py
# 或:
hx . # 打开文件夹(文件浏览器)
默认能力(零配置)
打开任何文件就有:
- 语法高亮(Treesitter,所有主流语言)
- LSP(自动找 pyright / rust-analyzer / gopls / tsserver 如果系统装了)
- 自动补全
- 跳转定义 / 引用
- diagnostics 显示
- 模糊文件搜索(Space-f)
- 全局 grep(Space-/)
- 多文件 buffer
- multiple cursor 多光标编辑
- 主题(30+ 内置)
不需要装插件,不需要写 config。
我用了一周记下来的常用键位
normal 模式(默认):
hjkl 移动
w / b 下/上一词
W / B 下/上 WORD (含标点)
gh / gl 行首 / 行尾
gg / ge 文件首 / 末
G 指定行号
% 配对括号
# 选择
v 进 selection extend 模式
x 选整行
) 扩选下一句
m m i 选当前 ( ... ) 内(match mode)
m m a 选当前 ( ... ) 含括号
# 多光标
C 下一行加光标
, collapse 多光标到主光标
A-C 上一行加光标
* 把当前 selection 作搜索 word
# 操作(先选后改)
d delete
c change (delete + insert mode)
y yank
p paste
~ 切大小写
u undo
U redo
# LSP
gd 去定义
gr 引用
gi 实现
K hover info
SPC a code actions
SPC r rename
# 文件 / buffer
SPC f 模糊找文件
SPC b buffer 列表
SPC / grep 全工程
SPC s symbol(当前文件)
SPC S workspace symbol
# 命令模式
: : write / : help / : config-reload / 等
按 Space 进入 picker 是 Helix 一大亮点:fuzzy 文件 / buffer /
symbol / grep / diagnostic 都在 Space-x 系列下。
配置:可选但很少需要
~/.config/helix/config.toml:
theme = "catppuccin_mocha"
[editor]
line-number = "relative"
mouse = false
cursorline = true
auto-format = true
bufferline = "always"
[editor.indent-guides]
render = true
character = "│"
[editor.lsp]
display-messages = true
display-inlay-hints = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
跟 Neovim 几百行 Lua 比,30 行 TOML 解决全部。
自定义 keymap
[keys.normal]
"C-s" = ":w"
"C-q" = ":q"
"esc" = ["collapse_selection", "keep_primary_selection"]
[keys.normal.space]
"e" = "file_picker" # 改 SPC e 为文件搜索(个人偏好)
LSP / formatter 装系统
Helix 不管 LSP server 安装。系统装好后自动用:
# Python
pipx install pyright ruff
# 或 npm i -g pyright
# TypeScript / JS
npm i -g typescript typescript-language-server
# Go
go install golang.org/x/tools/gopls@latest
# Rust(rustup 自带)
rustup component add rust-analyzer
hx --health python 看 python LSP / formatter / debugger 检测状态:
Configured language servers:
✓ pyright: /home/me/.local/bin/pyright-langserver
✓ ruff: /home/me/.local/bin/ruff
Configured debug adapter:
✓ debugpy
Configured formatter:
✓ ruff
Treesitter parser: ✓
Highlight queries: ✓
哪一项不通 / 哪个 binary 缺都明确告诉你。
跟 Neovim / VSCode 对比
| Helix | Neovim | VSCode | |
|---|---|---|---|
| 启动速度 | ~30ms | ~50-300ms(看配置) | 1-3s |
| 配置量(默认能用) | 0 行 | 200-500 行 Lua | 0 行 + extension |
| LSP 集成 | 内置 | nvim-lspconfig | 内置 |
| 插件生态 | 极少(按 plugin 不支持) | 极丰富 | 极丰富 |
| modal editing | ✅(kakoune 风) | ✅(vi 风) | extension |
| 内置 fuzzy / grep | ✅ | 装 telescope 等 | ✅ |
| debugger | DAP 集成(粗糙) | DAP(telescope-dap) | 极强 |
| 鼠标 / GUI | terminal only | terminal / neovide | full GUI |
Helix 适合:想要 modal editing 但不想花周末写 config 的人。
Neovim 适合:极致定制 / 已经投入了配置 / 需要某些插件。
VSCode 适合:debugger 重度 / 需要图形 / 团队混用。
缺点 / 注意
- 插件系统:Helix 不支持 plugin(design 选择)。Neovim 上的
copilot / lazygit 集成 / Treesitter playground 等都没有 Helix 等价物。
Plugin support 在 roadmap 上但还没。 - debugger 弱:内置 DAP 客户端粗糙,debug 体验不如 VSCode / nvim-dap。
- Vim 用户初期不适:动词名词顺序反 + 一些常用键改了。1-2 周适应。
一周体验
- 启动从 Neovim ~150ms → Helix 30ms(lazyloading 自然瞬时)
- 写代码体验差不多(LSP + Treesitter 一样齐)
- 不需要每年大改 config 跟 plugin breaking change
- 同事看我屏幕能立刻上手(key 高亮 + status bar 提示下一步)
正在评估全量切到 Helix。对深度 plugin 依赖(如 Org-mode)的同事保留
Neovim。
踩过的坑
-
y/p不进系统剪贴板:默认是 Helix 内部 register。
要系统:"+y/"+p(用+register)。可以 keymap 覆盖让y默认走系统。 -
Treesitter parser 缺:第一次开某语言文件
hx --health <lang>
看哪些缺。:treesitter-build重 build。 -
LSP 自动启但不响应:
:log-open看 LSP 日志。常见原因是
project root 找不到(缺pyproject.toml/package.json)。 -
Multi-cursor 撤销不一致:
u一次 undo 所有 cursor 的最近改动。
习惯就好。 -
没 file tree:
SPC ffuzzy 找文件代替(实际更快)。强烈想要
file tree → 暂时只能等 plugin support。
登录后参与评论。