這幾天都在試用一個超級犀利變態的Firefox擴充套件:Vimperator,能讓我們以超強編輯器Vim的編輯模式來操控Firefox。Vim是流行於Unix/Linux作業系統裡、或程式設計師們偏好使用的一種文字編輯器,主要以鍵盤的操作與輸入來進行文件的檢視與修改,因為雙手都在鍵盤上而大幅減少了鍵盤與滑鼠切換的次數,熟練以後就能快速的操作。當我們在不方便使用滑鼠的狀態下(例如坐在沙發或捷運上時),使用Vimperator就非常便利;可惜我太晚知道這個擴充,否則也不用自己以AutoHotkey寫了小工具(詳見AutoHotkey:在FireFox裡用鍵盤瀏覽網頁一文)。
最原始版本的Vim名稱是Vi(應該是代表Visual),Vim是Vi的加強版(Vi IMproved),我猜測Vimperator是取Vi與imperator的合體:Vi大將軍(imperator //,是大將軍;羅馬皇帝的意思,翻譯請見)。
另外由Wikipedia看到了在今年9月原有的Vimperator開發團隊另立門戶而釋出了Vimperator的分支:Pentadactyl(// 五指的,五趾的),代表意義是「A Vim-like five-fingered interface for Firefox and other xulrunner-based apps」,像Vim的Firefox五指介面,可能是說透過Pentadactyl能讓你的五根手指頭在Firefox裡「鍵」步如飛吧。稍稍比較了主幹與分支版本後,我決定使用更新得較頻繁的Pentadactyl來使用。
我由Pentadactyl下載了比較新的版本來試用(http://dactyl./files/pentadactyl-20101118.xpi),並且安裝到我的Firefox 3.6裡,以下是簡要的介紹。請注意所有的按鍵與指令都是大小寫嚴格區分的,b和B是兩個不同的功能。
瀏覽器畫面設定
安裝後第一次進入Firefox可不要被嚇到,怎麼畫面都不一樣了?首先用設定指令把畫面樣式變更回來:
- 輸入冒號(:)與set,空一格後再輸入go與=,接著是mTBnrs,最後按下〔Enter〕,功能表、工具列與書籤列等就會出現了。
:set go=mTBnrs 或 :set guioptions=mTBnrs
- 冒號進入Pentadactyl的命令模式,在命令模式裡可以輸入多項命令,例如:set就是設定各式系統參數
- go是GUIOptions的縮寫,是用來設定圖形介面的選項
- GUIOptions能接受的參數有下面幾種:
- m是功能表
- T是工具列
- B是書籤列
- n是分頁編號,使用n參數的話分頁圖示後面會多出分頁的編號(如下圖分頁上的紅框);如果是N則是在分頁圖示疊上編號
- r是右側的垂直捲軸,l(小寫的L)是左側的捲軸,若用b則是顯示底部的水平捲軸
- s是最底部的狀態列
- 瀏覽器底部左側的綠框的+-?代表的意義是:
- +表示目前分頁還有下個網頁
- -表示是目前分頁歷史的第一頁
- ?表示本網頁被加入到書籤(我的最愛所以用心形符號
)
- 瀏覽器底部右側的黃框的[1/5]2%代表的意義是:
- [1/5]表示目前分頁是5個分頁裡的第一個分頁
- 2%表示目前顯示位置是在整個頁面的2%位置
- 設定好的選項必須用:mkp!寫入系統設定檔,設定檔存放於C:\Users\使用者\_pentadactylrc(Windows 7)或C:\Documents and Settings\使用者\_pentadactylrc(Windows XP)
頁面操作
在Pentadactyl裡的常用頁面操作整理如下:
按鍵 | 說明 | 其他相同按鍵 |
---|---|---|
空白 | 向下一頁 | 同〔PgDn〕 |
Ctrl+B | 向上一頁 | 同〔PgUp〕 |
j | 向下一列 | 同〔↓〕 |
k | 向上一列 | 同〔↑〕 |
h | 向左一行 | 同〔←〕 |
l
(小寫的L) |
向右一行 | 同〔→〕 |
Ctrl+O | 回目前分頁歷史的上一頁面 | 同〔Alt+←〕 |
Ctrl+I | 回目前分頁歷史的下一頁面 | 同〔Alt+→〕 |
y | 複製目前網址到剪貼簿 | |
/ | 搜尋,在 / 後輸入要搜尋的文字,再按〔Enter〕開始搜尋,找到第一個符合的文字後:
|
|
gg | 到網頁最開頭 | 同〔Ctrl+Home〕 |
G | 到網頁最末端 | 同〔Ctrl+End〕 |
gi | 將游標移到頁面的第一個輸入欄位裡 | |
d | 關閉目前分頁 | |
r | 重新整理 | 同〔F5〕 |
M英數字 | 英數字是指小寫的a到z、A到Z、0到9等62個單個符號。M再加一個符號就能把目前的網址存入QuickMarks,例如目前網頁是http://www.google.com,按Mg將之存入QuickMarks,之後就能用gog或gng來開啟 |
以上按鍵中的Ctrl+B、Ctrl+O是組合按鍵,而為了減少按鍵數,我們可以用:map指令把〔Ctrl+B〕映射為〔v〕(或任何與預設按鍵不重覆的按鍵),設置後按〔v〕就等同於〔Ctrl+B〕(用<C-b>來表示),也就是往上一頁;要取消按鍵映射則用:unmap指令:
:map v <C-b> " 以下取消v鍵的mapping :unmap v
另外一個常用的按鍵映射命令是:noremap-不循環映射,表示某個按鍵不會重覆映射,如下例把往下一列的 j 鍵改成10個 j,即往下10列,如果不使用:noremap則會重覆映射而進入無窮迴圈:
:noremap j 10j
Pentadactyl的組合按鍵表示方法如下,知道按鍵表示式後才方便做map:
按鍵表示法 | 對應按鍵 |
---|---|
<C-按鍵> | 〔Ctrl+按鍵〕 |
<A-按鍵> | 〔Alt+按鍵〕 |
<S-按鍵> | 〔Shift+按鍵〕 |
<M-按鍵> | 〔Win+按鍵〕 |
為了能完全控制Firefox的鍵盤輸入,Pentadactyl針對網頁裡的各個區域都能分別做:map設定。Pentadactyl有下列幾個模式,用:<模式代碼>map就能針對特定的模式做按鍵設定,例如:imap就是設定插入模式的映射(簡體中文的模式圖示參考請按這裡):
模式代碼 | 代表區域 | 說明 |
---|---|---|
c | 命令行模式(Command-line) | 最底部的命令列 |
i | 插入模式(Insert) | 游標移入瀏覽器裡的輸入欄位時即進入插入模式,例如網址、搜尋欄位,或網頁內的輸入欄位 |
v | Visual模式 | 選取文字後即進入Visual模式 |
n | 一般模式(Normal) | 一般的瀏覽模式 |
t | TEXTAREA模式(Normal) | 針對TextArea區域的特別模式 |
上面介紹過的:noremap其實就是:nnoremap與:vnoremap的組合,適用於一般模式(n)與Visual模式(v)。
鍵盤映射範例與說明
接著我們來做幾個鍵盤映射,修改操作以適應以前的操作習慣或減少按鍵次數:
按鍵 | 功能 |
---|---|
Ctrl+F | 原本Ctrl+F是向下捲動,用下列指令修改成Firefox預設的搜尋: 用<C-v>將按鍵直接交給Firefox來處理(這稱為Pass Through,就是按鍵直接穿越給Firefox處理)。以下指令中,跟在〔Ctrl+V〕後面的按鍵不會被Pentadactyl處理而是直接給Firefox執行,因此會在底部出現Firefox的搜尋對話窗:
:noremap <C-f> <C-v><c-f> |
Ctrl+C | 剪貼簿操作按鍵〔Ctrl+C〕、〔Ctrl+V〕等在Pentadactyl裡都有不同的用法,我們可以用以下映射來變更成慣用按鍵:
:noremap noremap <C-c> <C-v><C-c> :cnoremap <C-c> <C-v><C-c> :inoremap <C-c> <C-v><C-c> Ctrl+C的處理我測試仍有些問題,必須按兩次才能正確複製,還在尋找解決方法 |
Ctrl+V | 把〔Ctrl+V〕改成剪貼簿的貼上:
:noremap noremap <C-v> <C-v><C-v> :cnoremap <C-v> <C-v><C-v> :inoremap <C-v> <C-v><C-v> |
Ctrl+A | 把〔Ctrl+A〕改成全選:
:noremap noremap <C-a> <C-v><C-a> :cnoremap <C-a> <C-v><C-a> :inoremap <C-a> <C-v><C-a> |
Ctrl+X | 把〔Ctrl+X〕改成剪下:
:noremap noremap <C-x> <C-v><C-x> :cnoremap <C-x> <C-v><C-x> :inoremap <C-x> <C-v><C-x> |
Ctrl+O | 把返回歷史頁面的上一頁面由組合按鍵〔Ctrl+O〕改成逗點(,):
:noremap noremap , <C-o> |
Ctrl+I | 把返回歷史頁面的下一頁面由組合按鍵〔Ctrl+I〕改成點(.):
:noremap noremap . <C-i> |
分頁操作
用鍵盤來開網頁比起滑鼠似乎有種說不出的快感,例如前面用M指令做好的QuickMarks,就能很快速的開啟:
指令 | 說明 |
---|---|
go英數字 | 將設定好的QuickMarks對應的網址開啟在目前分頁 |
gn英數字 | 和上列用途相同,但開啟在新分頁 |
gt | 切換到下一個分頁,要輸入兩個字母,我們可以〔Ctrl+N〕或者用:noremap c gt改用字母 c |
gT | 切換到上一個分頁,可以〔Ctrl+P〕或者用:noremap x gT改用字母 x |
b | 等於:buffer!指令,輸入分頁編號與〔Enter〕直接切換到指定分頁,也可以按〔Ctrl+號碼〕切換。其中〔Ctrl+6〕特別被設定成在前一分頁和目前分頁間來回切換的按鍵 |
用M指令是記錄目前分頁的網址,透過:qmark指令則可以直接指定網址,設定後同樣能用go與gn來開啟:
:qmark 英數字 網址 " 例如: :qmark j htp:///blog :qmark p http://www.
要列出所有已經設定的QuickMarks只要使用:qmarks就可以了。輸入:qmarks時你可以發現Pentadactyl有自動完成的功能,輸入部份文字後在命令區上方會顯示符合的命令,按下〔Tab〕就會找出最符合的指令,因此用〔Tab〕的自動完成功能可以節省很多輸入的時間。
▼按〔Tab〕可以做自動完成
開啟網頁的方法有很多種:
按鍵 | 指令 | 說明 |
---|---|---|
o | : open 網址 | 將網址開啟在目前分頁 |
t | :tabopen 網址 | 將網址開啟在新分頁 |
w | :winopen 網址 | 將網址開啟在新視窗 |
f | 頁面上的連結會被標上號碼,再輸入號碼就會把網址開啟在目前分頁 | |
F | 頁面上的連結會被標上號碼,再輸入號碼就會把網址開啟在新分頁 |
▼用輸入號碼的方法開啟連結
特定網址直接進入穿越模式
Google Reader與Gmail網站都提供了熱鍵,為了能繼續使用網站原有的按鍵,我們必須暫停Pentadactyl的處理,讓按鍵直接進入穿越模式,用Pentadactyl的AutoCommand觸發指令就能順利達成了:
:autocmd LocationChange (www|mail)\.google\.com/(reader|mail) -js modes.set(modes.PASS_THROUGH)
Pentadactyl小資訊
有了上面的簡單介紹應該就能順利的操作Pentadactyl了,更詳細的內容可以用:help指令來查詢。由Pentadactyl網站上看,也將推出Thunderbird電郵軟體的Vim介面,希望能盡快推出。
- Pentadactyl官方網站:http://dactyl./pentadactyl/index
- Pentadactyl開發版下載:http://dactyl./nightlies
- Pentadactyl論壇:http://groups.google.com/group/pentadactyl?pli=1
- Vimperator官方網站:http:///vimperator
- 簡體中文資源: