如何配置Vimperator

如何配置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-dCtrl+d)。这是一种通用的表达方式,也是Vim和Vimperator的表达方式。(后面会用到。)

更多信息,请在Vimperator中输入

:help

虽然是英文,也就忍忍吧。
习惯英文,总比找中文资料的效率高。从某种意义上来说,英文也是一种Life Changing级别的工具。

不顺之处

它在Vim的key binding的基础上,做出了一定的修改,使其更适合浏览器,比如tdHL

但是,在某些地方仍然过度地模拟了Vim的,导致实际浏览时的不便。

  • jk,在浏览网页时,这样一行一行地向下滚动,看久了眼晕,按久了手抽。
    至于 c-dc-f 这种向下翻页的方式,对小指的摧残,在Vim中也就罢了,因为用得不多;在浏览器中,则令人完全不能忍!

  • hl,可以左右滚动、并且需要左右滚动的网页,毕竟是少数。这俩几乎无用。

  • gtgT,即使在Vim中,它们也在大多数情况下不顺手。它们的威力,更多地发挥在超多标签页的情况下。
    但是大多数情况下,只是需要跳转到左边或右边一个标签页。这时,gtgT就变得格外地不顺手了。

按键 效果
ngt 跳转到第n个标签页
ngT 向左跳转n个标签页
  • 此外,还有hint模式。默认为数字,而且字体很小。数字毕竟在键盘第二行,和8指所在的第四行隔了一行。而且某些数字,如5、6等,按的时候需要看一眼、或者慢一点,否则容易按错。

这些不顺之处,其实并非作者的失误。而是为了保持和Vim的类似,与Vimperator最初的设计哲学保持一致。
众口难调,自己的需求,只能自己来满足。

自行定制

好在,Vimperator也拥有类似Vim的可定制自由度。在用户主文件夹下,可以通过编辑.vimperatorrc的方式,来改变不顺手的key binding。其语法,类似.vimrc

改变的思路是:

  • jk改为最常用的翻页方式,翻半页
  • hl改为最常用的切换标签页方式
  • 把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,然后一辈子只会用其中一小部分,要好得多。

后记

暂时就是这样,以后再更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章