Context

Linux desktop laptop 上,平时在 CLI 里改配置、脚本、Markdown、log 片段。Helix 就是 terminal 里的 editor。

最常见的入口:

hx file.md
hx path/to/config.toml
hx .

打开目录后再用 file picker 找文件:

cd ~/project
hx .

Helix 和 Vim 最大的手感差异:很多时候是先选中,再操作。比如 x 选中当前行,后面接 d 删除、c 改写、y 复制。[1]

启动 / 保存 / 退出

操作快捷键 / 命令备注
打开文件hx file.mdterminal 里直接开
打开当前目录hx .配合 Space f 找文件
进入编辑i / ainsert before / append after
回到 normalEsc做移动和修改前先回来
保存:wwrite
保存并退出:wqwrite-quit
不保存退出:q!force quit

常用打开方式:

cd ~/project
hx .

移动

操作快捷键备注
左 / 下 / 上 / 右h j k l少摸方向键
下一个 wordw命令、路径、变量名里常用
上一个 wordb回退
行首ghgoto line start
第一个非空白字符gsMarkdown list、缩进后定位
行尾glgoto line end
文件开头gg回到顶部
文件最后一行geVim 是 G,Helix 是 ge [2]
第 42 行42G看报错行号
匹配括号mmJSON、函数调用、Markdown link

临时记法:

top: gg
end: ge
line start/end: gh / gl
line number: 42G

Selection 和行级编辑

操作快捷键备注
选中当前行x再接 delete / change / yank
选中整个文件%全文件替换前用
进入扩展选择vmovement 会扩展 selection
collapse selection;回到单点
只保留主 selection,多光标收尾

常见动作:

操作快捷键
删除当前行xd
改写当前行xc
复制当前行xy
粘贴到后面p
粘贴到前面P
替换一个字符r<char>

这几个比单独背 dcy 更好记:先 x,再处理这一行。

查找

操作快捷键
文件内向后查找/pattern 然后 Enter
文件内向前查找?pattern 然后 Enter
下一个结果n
上一个结果N
用当前 selection 作为搜索词*
项目 / workspace 全局搜索Space /

当前词搜索可以用 selection + *。从 Vim 过来时先记 be*n:选到 word 边界,用 selection 作为搜索模式,再跳到下一个结果。[2]

查配置或代码时常搜这些:

proxy
timeout
localhost
TODO
ERROR

当前文件内用 /TODO,整个 project 里用 Space /proxysshdocker

替换

Helix 里我先按这个流程记:

选范围 -> s 搜匹配 -> c 改内容 -> Esc -> , 收尾

当前 selection 内替换:

sfoo<Enter>cbar<Esc>,
  • sfoo<Enter>:在当前 selection 内选中所有 foo
  • cbar<Esc>:把所有 selection 改成 bar
  • ,:只保留主 selection。

全文件替换:

%sfoo<Enter>cbar<Esc>,

% 是 select entire file,所以这个相当于全文件 search and replace。[2]

例子:把几行命令改成 checklist。

原文:

docker ps
docker logs app
docker exec -it app bash

操作:

  1. x 选中一行。
  2. C 向下加 cursor,覆盖三行。
  3. I- [ ] 在每一行开头同时插入 checklist 前缀。
  4. Esc, 收尾。

文件、buffer、workspace

操作快捷键 / 命令
打开文件 pickerSpace f
从当前工作目录打开 file pickerSpace F
打开 buffer pickerSpace b
下一个 buffergn
上一个 buffergp
打开文件:o path/to/file.md
新建 scratch buffer:n
关闭当前 buffer:bc
重新从磁盘加载文件:reload

操作顺序一般是:hx . Space f 找文件 Space / 搜关键词 Space b 切已经打开的文件。

写代码 / 配置时

操作快捷键
go to definitiongd
go to referencesgr
hover documentationSpace k
rename symbolSpace r
code actionSpace a
document symbolsSpace s
workspace symbolsSpace S
下一个 diagnostic]d
上一个 diagnostic[d
comment / uncommentSpace c
format file:fmt

LSP 快捷键依赖对应语言服务器。Markdown 文件不一定用得上;Python、Rust、TypeScript、config 文件更常用。

Linux 配置

Helix 在 Linux 默认读取:

~/.config/helix/config.toml

暂时只放两个 keymap:

[keys.normal]
C-s = ":w"
 
[keys.insert]
j = { k = "normal_mode" }

Ctrl-s 保存;jk 回 normal mode。先不大改默认键位,避免以后看文档对不上。[3]

常用组合

  • gg / ge / 42G
  • gh / gs / gl
  • x d / c / y
  • / / ? / n / N
  • %sfoo<Enter>cbar<Esc>,
  • Space f / Space / / Space b

Reference

[1] Helix docs - Using Helix

[2] Helix docs - Migrating from Vim

[3] Helix docs - Key remapping

[4] Helix docs - Keymap

[5] Helix docs - Commands