VimFx 键盘快捷键实战:把 Firefox 变成免鼠标操作台的完整指南

📅 2026/8/24 2:32:48
VimFx 键盘快捷键实战:把 Firefox 变成免鼠标操作台的完整指南
VimFx 键盘快捷键实战把 Firefox 变成免鼠标操作台的完整指南【免费下载链接】VimFxVim keyboard shortcuts for Firefox项目地址: https://gitcode.com/gh_mirrors/vi/VimFxVimFx 是一个 Firefox 扩展它把 Vim 风格的键盘快捷键搬进浏览器让你用几个按键完成翻页、点链接、切标签页尽量不碰鼠标。它按模式组织所有快捷键每个键位都能改还能用一份 JS 配置文件加上自定义命令。核心机制一句话把连续按下的键在一棵快捷键树上逐层匹配匹配到叶子节点就执行对应命令匹配不上就交还给网页。传统操作在哪一刻开始拖后腿开着二三十个标签页、又要在长文章里上下翻、点引用链接、再切回去继续读——这时候鼠标要来回移动几百次眼睛和手腕一起累。更麻烦的是CtrlTab 在标签之间是无序乱跳想回到十分钟前那个页面基本靠翻。Vimium 这套思路在 Chrome 上很顺但它只支持 Chrome老牌的 Vimperator 虽然针对 Firefox却被原作者批评为功能太多还激进地改掉 Firefox 默认的外观和行为。VimFx 想做的事很克制只加一层快捷键不碰浏览器的任何默认行为而且所有东西都能一键关掉。⚙️ 机制拆解按键流是怎么变成一次动作的要理解 VimFx抓住两件事就够了模式决定现在哪些命令可用、按键怎么处理快捷键树决定按下的这些键到底对应哪个命令。模式mode是顶层开关。VimFx 内置 Normal、Ignore、Hints、Caret 四种。你平时待在 Normal 模式按i进 Ignore 让扩展完全闭嘴按f进 Hints 去点页面上的元素用v进 Caret 去复制文字。模式是按标签页生效的不是全局的所以切到另一个标签可能看到完全不同的模式。**快捷键树key tree**把多键组合变成一次行走。以gg跳到页面顶部为例输入 → 处理 → 输出 的链条是这样的。按下第一个gVimFx 在当前模式的快捷键树里找到对应的子节点但还没到终点记作部分匹配partial接着按下第二个g正好走到一个叶子节点Leaf这时才认定是完整匹配full取出叶子挂着的命令去执行。如果在中间超时默认options.timeout控制没按出后续键整条树就重置回根。这套设计带来两个顺手的能力。一是count计数在顶层按下数字会先累积成 count比如12x就是关掉 12 个标签数字是放在命令前面的和 Vim 把数字放中间不同。二是Hints 模式按f后页面上所有可点的链接、输入框、按钮被标上字母你再敲对应的字母VimFx 就替你点它还能带出复制链接新标签打开等变体。 代码走读三段代码看懂匹配引擎VimFx 用 CoffeeScript 写在extension/lib/下。匹配的核心在 extension/lib/vimfx.coffee 的consumeKeyEvent里最关键的分支就几行switch when keyStr of currentKeyTree next currentKeyTree[keyStr] if next instanceof Leaf type full {command, specialKeys} next else currentKeyTree next type partial when options.counts_enabled and toplevel and DIGIT.test(keyStr) count keyStr type count else reset(mode)这段就是在回答我这一键按下去算什么树里有这个键且落到叶子就是full该执行了树里有但还没到叶子就partial继续等下一键顶层是数字就累进 count都不是直接重置。读到这里为什么gg要按两下才动就有答案了。命令是怎么挂到树上的看 extension/lib/modes.coffee 的mode工厂函数mode (modeName, obj, commands null) - obj.name translate(mode.#{modeName}) obj.commands {} for commandName, fn of commands pref mode.#{modeName}.#{commandName} obj.commands[commandName] { pref: defaults.BRANCH pref run: fn description: translate(pref) order: defaults.command_order[pref] } exports[modeName] obj它把每个命令都包成一个带pref可配置项名、run执行函数、description帮助里显示的文字的对象。所以你在帮助页看到的每条命令和你在选项里能改的每个快捷键其实是同一份数据。等你在 Hints 模式里按对了字母真正点下去的动作由 extension/lib/hints-mode.coffee 完成它要处理多个元素同时命中的情况[largestMatchedMarker] matchedMarkers .sort((a, b) - b.wrapper.shape.area - a.wrapper.shape.area) again callback(largestMatchedMarker, storage.count, match.keyStr)当你输入的字母同时匹配到好几个标记时它按元素面积从大到小排序取最大的那个来点。这避免了点到一个小图标却想点它背后的大卡片这种尴尬。 效果实证文档里能直接验证的行为这套扩展没有性能图表它的效果体现在一连串可复现的操作行为上。在一个普通网页上按f页面立刻给链接、输入框、按钮贴上字母标记输入对应字母该元素被激活等价于你点了一次。按/进入页面内搜索敲关键词后用n和N在匹配项之间前后跳。标签页操作t新开、x关闭、X恢复刚关的J和K向前后切换标签gg到顶、G到底。在 Normal 模式下输入12x会一次性关掉当前标签及其后共 12 个标签而不是只关一个。把某个网站加进黑名单后访问它的瞬间 VimFx 自动进入 Ignore 模式扩展按键全部失效直到你手动切回。这些都能在装好扩展后的任意页面上逐条试出来是判断它是否顺手的最快方式。 上手路径从安装到第一次免鼠标点击VimFx 是一个 legacy 扩展Firefox 115 需要先装上 LegacyFox 这个垫片shim用来让旧式扩展能在新版内核里跑。git clone https://git.gir.st/LegacyFox.git cd LegacyFox sudo make install装好垫片后再拿 VimFx 本体从源码构建出.xpi一个改名的 zip 文件git clone https://gitcode.com/gh_mirrors/vi/VimFx cd VimFx npm install npm run gulp -- xpi构建产物在build/VimFx.xpi。把它拖进 Firefox 窗口或按CtrlO选中它打开即可。装好后的第一组按键建议就这四个按?打开内置帮助再用/在帮助里搜索按f体验 Hint 点击按t新开、J/K切标签。⚠️ 边界与提醒什么时候别硬用需要 LegacyFox且.xpi未签名要在 Firefox 里允许未签名/开发者模式安装它也不提供自动更新升级要自己去 releases 手动拉。某些网站本身就重度吃键盘比如在线文档、代码编辑器会和 VimFx 抢键。这时按i临时进 Ignore 模式或把该站点写进黑名单自动进入。模式是按标签页记的切标签后看到的行为可能不同别以为是 bug。Escape键会被有意放行好让你照常停止页面加载、关闭各类对话框如果你依赖它做别的事要心里有数。它是只加不改的定位不会重做浏览器已有功能想要更激进的改造或 WebExtension 新方案README 里列了 Vimium-FF、Tridactyl 等替代品可对照。装好后先花十分钟把?帮助翻一遍再按自己的手热把defaults里几个键位调顺手VimFx 就能稳稳地待在你的键盘右手边不抢戏、也不掉链子。【免费下载链接】VimFxVim keyboard shortcuts for Firefox项目地址: https://gitcode.com/gh_mirrors/vi/VimFx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考