如何配置Vimperator
简介
Vimperator是Firefox的一个扩展,让人以Vim的方式,进行浏览器的各种操作。它是一个开源工具。
这个工具,和Vim类似,也属于Life Changing级别的工具。绝不仅仅是看上去比较黑客,而是实实在在地大幅提高效率。
每一个鼠标操作,看上去比较简单易懂,但实际上都是成百上千个Event的手动操作,如果能用快捷键替代,那么对精力的节省,都是潜移默化的。
每一个常用操作,如果能少按一个按键,比如Ctrl,那对效率的提升,都是可以累计的。
能按键的,不动鼠标;能少按一个键的,就少按一个键。
闲话少叙,进入正题。
Vimperator的默认设置里,常用操作包括:
按键 | 效果 |
---|---|
j | 向下滑动 |
k | 向上滑动 |
h | 网页向左滚动 |
l | 网页向右滚动 |
H | 网页后退 |
L | 网页前进 |
c-d | 向下翻半页 |
c-u | 向上翻半页 |
c-f | 向下翻一页 |
c-b | 向上翻一页 |
t | 在右边打开新标签页(可直接输入关键字搜索) |
o | 在当前页面打开新标签页 |
d | 关闭当前标签页(并跳转到右边) |
D | 关闭当前标签页(并跳转到左边) |
gt | 移动到右TAB页 |
gT | 移动到左TAB页 |
f(进入hint模式),然后输入对应数字 | 打开当前网页上某链接 |
]] | 自动点击next之类的按钮,向后翻网页 |
[[ | 自动点击prev之类的按钮,向前翻网页 |
表中c-即Ctrl+(c-d即Ctrl+d)。这是一种通用的表达方式,也是Vim和Vimperator的表达方式。(后面会用到。)
更多信息,请在Vimperator中输入
:help
虽然是英文,也就忍忍吧。
习惯英文,总比找中文资料的效率高。从某种意义上来说,英文也是一种Life Changing级别的工具。
不顺之处
它在Vim的key binding的基础上,做出了一定的修改,使其更适合浏览器,比如t、d、H和L。
但是,在某些地方仍然过度地模拟了Vim的,导致实际浏览时的不便。
j和k,在浏览网页时,这样一行一行地向下滚动,看久了眼晕,按久了手抽。
至于 c-d 和 c-f 这种向下翻页的方式,对小指的摧残,在Vim中也就罢了,因为用得不多;在浏览器中,则令人完全不能忍!h和l,可以左右滚动、并且需要左右滚动的网页,毕竟是少数。这俩几乎无用。
gt和gT,即使在Vim中,它们也在大多数情况下不顺手。它们的威力,更多地发挥在超多标签页的情况下。
但是大多数情况下,只是需要跳转到左边或右边一个标签页。这时,gt和gT就变得格外地不顺手了。
按键 | 效果 |
---|---|
ngt | 跳转到第n个标签页 |
ngT | 向左跳转n个标签页 |
- 此外,还有hint模式。默认为数字,而且字体很小。数字毕竟在键盘第二行,和8指所在的第四行隔了一行。而且某些数字,如5、6等,按的时候需要看一眼、或者慢一点,否则容易按错。
这些不顺之处,其实并非作者的失误。而是为了保持和Vim的类似,与Vimperator最初的设计哲学保持一致。
众口难调,自己的需求,只能自己来满足。
自行定制
好在,Vimperator也拥有类似Vim的可定制自由度。在用户主文件夹下,可以通过编辑.vimperatorrc的方式,来改变不顺手的key binding。其语法,类似.vimrc。
改变的思路是:
- 把j和k改为最常用的翻页方式,翻半页
- 把h和l改为最常用的切换标签页方式
- 把hint模式的符号,改为英文26字母,以便敲击
- 把hint模式的字体改大
参考了网上的一些配置后,又新增了:
- 把下方命令模式的字体改大
- 给]]、[[翻页指令,添加中文支持
有改动的配置如下:
按键 | 效果 |
---|---|
j | 向下翻半页 |
k | 向上翻半页 |
h | 跳转到左边那个标签页 |
l | 跳转到右边那个标签页 |
nh | 向左跳转n个标签页 |
nl | 向右跳转n个标签页 |
改变的方法
一个是编辑文件的方式,在以下文件中,
~/.vimperatorrc
添加以下代码:
highlight Hint::after content: attr(number); font-size:13pt
highlight Normal color: black; background: white; font-size:14pt
noremap j <C-d>
noremap k <C-u>
noremap J 10j
noremap K 10k
noremap h <C-p>
noremap l <C-n>
set hintchars=abcdefghijklmnopqrstuvwxyz
set nextpattern=s*下一页|下一张|next|下一篇|下一页|后一页|下页|后页s*,^bnextb,bnextb,bsuivantb,^>$,^(>>|??|?)$,^(>|?),(>|?)$,bmoreb
set previouspattern=s*上一页|上一张|prev|上一篇|上一页|上页|前一页|前页s*,^bprev|previousb,bprev|previousb,^<$,^(<<|??|?)$,^(<|?),(<|?)$
还有一种就是,在使用Vimperator时,进行实时设置。
例如,输入
:noremap l <c-n>
等自定义key binding。然后查看效果。如果满意,则可以输入
:mkvimperatorrc!
这样,新的配置,就会自动写入.vimperatorrc,并且覆盖之前设置过的同一配置。
推荐用这种方式,这比复制一大段看不懂或者不乐意看的牛人.vimperatorrc,然后一辈子只会用其中一小部分,要好得多。
后记
暂时就是这样,以后再更新。