Essay 012 · 工具

Vimium 与 Vim 按键迁移的四类边界

Vimium 能迁移方向感和模式意识,却不能替代 Vim 的操作符语法;用四类按键边界拆清哪些习惯能复用、哪些必须重学。

本次修订:拆分 Vim 移动按键说明,并补充 b 的向后移动语义

Version 1.3

Vimium 可以迁移方向感、模式意识和少量导航习惯,但不能让人无缝迁移到 Vim。判断能否迁移的标准不是“按键长得一样”,而是同一个按键在两端触发的动作是否相近。

Vimium 与 Vim 按键迁移检查站:同义、冲突与两端独有映射

四类边界如何划分

只比较“两端各自定义了哪些按键”,只能分出三个区域:Vimium 独有、Vim 独有、两端共有。要回答“习惯能不能带过去”,还要看共有按键在两端触发的动作是否相近。按这个标准把交集再切一刀,三个区域就变成四类:

序号 类别 判定条件 学习意义
1 Vimium 独有 只在 Vimium 中有定义 只当作浏览器命令记忆
2 Vim 独有 只在 Vim 中有定义 进入编辑器后重新学习
3 同键同义或近义 两端都有,且动作相同或相近 肌肉记忆可以迁移
4 同键异义 两端都有,但动作不同 必须主动解除旧联想

第四类不是维恩图里凭空多出的区域,而是把交集按动作语义再分了一次。比较的单位仍然是按键,动作只是判断这个按键的习惯能否迁移的依据。

四类按键在本机如何分布

本机使用 Vimium 2.4.2 与 NvChad,且 Vimium 的 / 已被取消映射,当前有效的 Normal 模式映射共 67 个。按迁移价值划分:21 个同义或近义、40 个同键异义、6 个 Vimium 独有;Vim 独有项不计入这 67 个。

这里的“近义”允许操作对象不同。例如 j 在 Vimium 中向下滚动页面,在 Vim 中向下移动光标:动作不完全相同,但方向感可以迁移。若只承认严格同义,这 21 个还要继续缩减。

同义或近义:可以迁移的 21 个按键

序号 按键 Vimium Vim 数量
1 h j k l 页面向左、下、上、右滚动 光标向左、下、上、右移动 4
2 gg G 到页面顶部、底部 到缓冲区首行、末行 2
3 zH zL 滚到页面最左、最右 水平滚动半屏 2
4 Ctrl-E Ctrl-Y 向下、向上滚动 屏幕向下、向上滚动一行 2
5 i 进入 Insert mode,让网页接收按键 在光标前进入插入模式 1
6 v V 进入字符、行级可视选择 进入字符、行级 Visual mode 2
7 n N 下一个、上一个搜索结果 下一个、上一个搜索结果 2
8 * # 向前、向后查找选中文本 向前、向后查找光标下单词 2
9 gt gT 下一个、上一个浏览器标签页 下一个、上一个 Vim tab page 2
10 m + 字符、反引号 + 字符 创建标记、跳转到标记 创建标记、跳转到标记 2

这组按键可以放心复用,但要注意两端的操作对象不同:浏览器里是页面、链接和标签页,Vim 里是光标、文本对象和缓冲区。

同键异义:必须重学的 40 个冲突按键

同键异义最容易制造“我明明按对了”的错觉。下表覆盖本机当前 Vimium 映射中的全部 40 个冲突键。

序号 按键 Vimium Vim 数量
1 d u 向下、向上滚动半页 删除操作符、撤销 2
2 r R 普通刷新、强制刷新 替换字符、进入 Replace mode 2
3 yy 复制当前网址 复制当前行 1
4 p P 在当前、新标签页打开剪贴板网址 在光标后、前粘贴 2
5 gi 聚焦第一个输入框 回到上次插入位置并进入插入模式 1
6 [[ ]] 上一个、下一个页面链接 向后、向前移动到 section 2
7 gf gF 切换 frame、回到主 frame 打开光标下文件、并跳到指定行 2
8 gu gU URL 上一级、站点根路径 小写、大写操作符 2
9 f F 显示链接提示并在当前、新标签页打开 向前、向后查找字符 2
10 o O T b B ge gE Vomnibar、标签选择、书签与网址编辑 新建行、反向 till-char、WORD 与词尾移动 7
11 H L J K ^ 浏览历史、切换标签页 屏幕行移动、合并行、关键字帮助、首个非空白字符 5
12 << >> g0 g$ W 移动标签页、首末标签页、新窗口 缩进、屏幕行首尾、按 WORD 前进 5
13 t x X 新建、关闭、恢复标签页 till-char、删除当前字符、删除前一字符 3
14 zi zo ? gs 页面缩放、帮助、查看源码 折叠控制、反向搜索、休眠 4

最需要警惕的是 d/u:Vimium 用不带修饰键的 du 滚动半页;Vim 的半页移动是 Ctrl-DCtrl-U,裸 d 是删除操作符,裸 u 是撤销。少按一个 Control,动作就从导航变成编辑。

Vimium 独有:6 个完整命令

“独有”只表示 Vim 的默认 Normal mode 没有对应的完整命令;Vim 可以通过配置重新绑定任何键。

序号 按键 Vimium 动作 Vim 中的情况
1 Option-F 连续选择多个链接并排队打开 默认没有对应完整命令
2 yf 通过链接提示复制链接网址 y 是操作符,仍会等待后续目标
3 yt 复制当前浏览器标签页 y 是操作符,仍会等待后续目标
4 Option-P 固定或取消固定标签页 默认没有对应完整命令
5 Option-M 静音或取消静音标签页 默认没有对应完整命令
6 z0 恢复页面缩放 默认没有对应完整命令

yfyt 尤其值得单独记:在 Vimium 中两次按键就完成动作;在 Vim 中 y 只是操作符的开头,按下后还会等待后续目标,不会执行任何动作。

Vim 独有:一套组合语法

Vim 的核心优势不在孤立命令的数量,而在组合语法:操作符可以与移动、文本对象自由组合。

序号 语法家族 常见按键 含义
1 移动 w 向前移动到下一个单词的开头
2 移动 b 向后移动到上一个单词的开头
3 移动 e 向前移动到当前或下一个单词的结尾
4 移动 0 移动到当前行的行首
5 移动 $ 移动到当前行的行尾
6 移动 % 跳转到与当前位置配对的括号或符号
7 移动 ( 向后移动到上一句的开头
8 移动 ) 向前移动到下一句的开头
9 移动 { 向后移动到上一段的开头
10 移动 } 向前移动到下一段的开头
11 屏幕与跳转 Ctrl-D/U Ctrl-F/B Ctrl-O/I ; , 翻页、跳转列表、重复字符查找
12 编辑动作 a A I c s D ~ . Ctrl-R 插入、修改、删除、大小写与重复
13 操作符 × 移动 dw cw d$ y$ 删除、修改或复制到某个移动终点
14 操作符 × 文本对象 diw ciw ci" da( 操作单词、引号或括号内部与周围
15 寄存器、宏与命令 "ap qa…q @a :w :%s 指定寄存器、录制宏和执行 Ex 命令

这也是无法“无缝迁移”的根本原因:Vimium 本质上是一份浏览器命令清单,Vim 则是一门由操作符、移动、文本对象、次数和寄存器组合而成的编辑语言。

从映射表回到实际输入

映射表只说明按键对应什么命令,不保证按键能原样送达。浏览器中的输入链路是“macOS 物理按键 → Chrome → Vimium”,终端中则是“macOS 物理按键 → Ghostty → tmux → Neovim”。两端文档里显示的内部键名相同,不代表最终应用收到的按键序列相同。

当前环境中的实际按键

  • Ghostty 把物理 Option 作为 Alt 发送;浏览器里的 Option-F 到了终端只是 Alt-F,不会自动变成任何 Vim 动作。
  • tmux 的 prefix 是物理 Ctrl-Space,按下后下一键先由 tmux 的 key table 解释。
  • 终端粘贴是物理 Command-V;Vim 进入块级 Visual mode 是物理 Ctrl-V,两者不是同一个快捷键。
  • Vimium 的半页滚动是物理 d/u;Vim 的半页移动是物理 Ctrl-D/Ctrl-U
  • 当前 NvChad 还把 jk 映射为退出 Insert mode、把 ; 映射为 :,所以上文的默认按键表只是起点,最终行为仍以实际配置为准。

此外,Vimium 在排除站点上完全不接管按键。本机的 Gmail 与哔哩哔哩就在排除列表中,在这两个站点上练不到任何 Vimium 肌肉记忆。

按风险安排学习顺序

  1. 先稳定 h/j/k/lgg/Gn/N 与标记,复用方向感、搜索和跳转习惯。
  2. d/uf/Fp/Px/Xr/Ro/O 当作冲突清单,进入 Vim 后主动切换语义。
  3. 直接学习 Vim 的“操作符 × 移动/文本对象”,从 dwd$ciwci" 开始;这部分在 Vimium 里没有对应经验,不必等迁移。
  4. 遇到修饰键时沿物理按键、Ghostty、tmux、Neovim 逐层核对,尤其区分 Command、Control 与 Option。

Vimium 是很好的键盘导航入门,但不是 Vim 模拟器。它能提前训练“不碰鼠标”和“先发命令再看结果”的习惯;真正进入 Vim 后,要保留可迁移的导航骨架,清空冲突键的旧联想,再从头学习组合语法。

参考资料

查看本文修订记录(4)
  1. v1.3 · 2026.09.02 拆分 Vim 移动按键说明,补充 b 的向后移动语义。
  2. v1.2 · 2026.08.31 改写全文措辞,提升可读性。
  3. v1.1 · 2026.08.31 重组章节层级,收拢按键分类与练习路径。
  4. v1.0 · 2026.08.31 首次发布。