与 micro 那种开箱即用的现代通用快捷键不同,Helix 是一款“模态”编辑器(类似 Vim),但它的核心逻辑是 “先选中,后操作” (Selection -> Action)。这意味着你总是先看到高亮选中的内容,然后再决定对它做什么(删除、复制、修改等)。

以下是 Helix 最核心的快捷键指南,帮助你快速上手:

🔄 模式切换

Helix 启动时默认处于 Normal(普通)模式,用于移动和操作文本。

操作快捷键备注
进入插入模式 (Insert)i / ai 在光标前插入,a 在光标后追加
进入命令模式 (Command):用于保存、退出、配置等
返回普通模式Esc任何时候按 Esc 都会退回普通模式并取消多余的选择

🧭 基础移动 (Normal 模式下)

功能快捷键备注
上下左右k (上), j (下), h (左), l (右)继承自 Vim 的经典键位
词组跳跃w (下一个词首), b (上一个词首), e (当前/下一个词尾)移动的同时会自动选中跨越的词组
行首 / 行尾Home / End 或者 g h / g l

✂️ 选择与编辑 (Normal 模式下)

记住 Helix 的精髓:你所有的移动都会产生“选择”,接下来的操作都针对当前的“选择”生效。

功能快捷键备注
选中整行x连续按 x 会继续向下选中多行
全选%选中整个文件内容
删除 (Delete)d删除当前选中的内容
修改 (Change)c删除选中内容,并自动进入插入模式
复制 (Yank)y复制选中的内容
粘贴 (Paste)p在当前选中内容之后粘贴
撤销 / 重做u (撤销) / U (重做)注意大小写区分
查找/输入关键字回车,按 n 找下一个,N 找上一个

💾 保存与退出 (通过 : 命令模式)

  • :w - 保存 (Write)
  • :q - 退出 (Quit)
  • :wq - 保存并退出
  • :q! - 强制退出放弃修改

💡 终端鼠标兼容性小贴士

和很多现代终端工具一样,Helix 默认是开启鼠标支持的(支持点击定位和拖拽选择)。如果你在特定的终端模拟器中发现开启鼠标支持会导致光标漂移、或者终端原生的文本选中/复制功能失效,你可以通过配置文件将 Helix 的鼠标功能关闭,完全依赖纯键盘操作。

创建或修改 Helix 的配置文件 ~/.config/helix/config.toml,在 [editor] 选单下添加:

[editor]
mouse = false

配置保存后重启 Helix,终端自身的选中和鼠标逻辑就会恢复正常。


用 micro 替代 nano 是一个非常棒的决定。micro 最大的优势就是它完全采用了现代人最习惯的通用快捷键,彻底抛弃了 nano 那套略显反人类的 Ctrl+O (保存) 和 Ctrl+X (退出)。

在修改配置文件(比如 Docker Compose 或 Caddyfile)时,你基本上可以直接把平时的打字习惯平移过来。

⌨️ 基础操作快捷键

功能快捷键备注
保存Ctrl + S替代 nano 的 Ctrl+O
退出Ctrl + Q替代 nano 的 Ctrl+X
复制Ctrl + C终于可以正常复制了
粘贴Ctrl + V终于可以正常粘贴了
剪切Ctrl + X选中后剪切,也可以用来删除整行
撤销Ctrl + Z极为实用的防手残功能
重做Ctrl + Y恢复撤销的操作
全选Ctrl + A方便清空整个文件
查找Ctrl + F替代 nano 的 Ctrl+W

🚀 进阶与特色功能

除了基础的文本编辑,micro 还有几个能大幅提升效率的特性:

  • 命令面板 (Ctrl + E):类似 VS Code 的 Ctrl+Shift+P。按下后会在底部弹出一个命令行,你可以输入指令。

    • 输入 vsplit 可以垂直分屏(非常适合对照查看两个配置文件)。
    • 输入 replace 可以进行文本替换(替代 nano 的 Ctrl+\)。
    • 输入 set tabstospaces true 可以将 Tab 转换为空格。
  • 多光标支持:在支持的终端下,按住 Ctrl 然后用鼠标点击,或者使用 Alt 加方向键,可以像现代编辑器一样同时编辑多行。
  • 鼠标支持:默认情况下 micro 是开启鼠标支持的,你可以直接用鼠标点击定位光标、拖拽选中文字,甚至使用滚轮。

💡 终端鼠标漂移问题小贴士:
如果你在某些特定的终端模拟器下发现,由于开启了鼠标支持导致光标漂移、错位或者无法正常选中复制,可以通过快捷键 Ctrl + E 唤出命令面板,然后输入 set mouse false 来暂时关闭它的鼠标接管。这样终端的选中和复制逻辑就会恢复为最基础的行为,避免兼容性冲突。如果你想永久修改,可以在 ~/.config/micro/settings.json 中添加 "mouse": false。