如何配置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,然後一輩子只會用其中一小部分,要好得多。

後記

暫時就是這樣,以後再更新。

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