# 完全用 GNU/Linux 工作
### 13. Pentadactyl
[Pentadactyl](http://5digits.org/pentadactyl/) 是個號稱「只用五隻手指」就可以完全操控 Firefox 的 Vim-like 套件,而且相似度極高,不管是 hjkl 的操作模式、自訂快捷鍵 (keymap) 還是更換佈景主題 (colorsheme) 它都辦得到。
它與 [Vimperator](http://www.vimperator.org/vimperator) 的差異在於:前者是在 Firefox 實作出 100% 的 Vim;後者優化了瀏覽上的使用者體驗,並標榜它是可用、簡潔、穩定及具有設計的。事實上後者對於新版的 Firefox 較不友善,常跟不上更新 (或許是該怪 Firefox 更新速度過快),除此之外前者的高自訂性以及其它的林林總總讓凍仁最後選擇了 Pentadactyl。
![2013-09-30-pentadactyl-01.png](https://box.kancloud.cn/2015-08-18_55d2bba9768b7.png "2013-09-30-pentadactyl-01.png")
▲ Pentadactyl 操作手冊 (:help)。
### 快速上手
若 Firefox 版本太新,請至 Pentadactyl 官方網站手動安裝 [Nightly builds](http://5digits.org/nightlies) 的版本。
![2013-09-30-pentadactyl-05.png](https://box.kancloud.cn/2015-08-18_55d2bba990b57.png "2013-09-30-pentadactyl-05.png")
▲ [Add-ons | Mozilla](https://addons.mozilla.org/en-US/firefox/addon/pentadactyl/) 網站上的 plugin 已多年未更新。
圖形設定
~~~
:set go+=mTB<CR> # 顯示選單列、分頁列及書籤列。
~~~
頁面捲動
~~~
j " 往下捲動一行。
k " 往上捲動一行。
<C-f> " 往下捲動一頁。
<C-b> " 往上捲動一頁。
~~~
分頁及歷史記錄
~~~
gt " 前往下個分頁。
gT " 前往上個分頁。
g0 " 前往第一個分頁。
g$ " 前往最後一個分頁。
d " 關閉當前分頁。
" 開啟新分頁,可依輸入的文字進行搜尋或開啟書籤、歷史記錄。
t drx.tw
" 於當前分頁進行搜尋或開啟書籤、歷史記錄。
o drx.tw
~~~
### 凍仁的 Pentadactyl
如不想使用凍仁的 Pentadactyl 環境設定 (pentadactylrc),請跳過此步驟。
下載凍仁的環境設定。
~~~
[ jonny@wheezy ~ ]$
$ wget https://raw.github.com/chusiang/tuxENV/master/home/_pentadactylrc
~~~
將設定檔移至家目錄底下。
~~~
[ jonny@wheezy ~ ]$
$ mv _pentadactylrc ~/.pentadactylrc
~~~
重開 Firefox (或於 Pentadactyl 底下使用 *:source ~/.pentadactylrc* 重新讀取設定 )。
※ 註:以下設定需寫在 *~/.pentadactylrc* 才可儲存。
圖形設定。
~~~
" 預設只顯示書籤列 (B)、顯示分頁編號 (N)、狀態列 (s)。
:set guioptions=BNs
~~~
頁面捲動。
~~~
" 將 j, k 改成向下、上三行。
map -modes=n j -builtin 3j
map -modes=n k -builtin 3k
" 將 J, K 改成至向下、上半頁。
map -modes=n J <C-d>
map -modes=n K <C-u>
" 將 b 至換成往上一頁 (b 原先為 buffer 的快捷鍵)。
map -modes=n b <PageUp>
~~~
分頁切換 (在 Mac OSX 裡,若要改用 Cmd 來發動,則 A-? 的部份需改成 M-?)。
~~~
map -modes=n <A-e> <C-S-e> " Alt + e : 開啟群組分頁。
map -modes=n <A-j> gt " Alt + j : 前往下個分頁。
map -modes=n <A-k> gT " Alt + k : 前往上個分頁。
" Alt + 1 : 前往第 1-5, 7-8 及最後一個分頁。
map -modes=n <A-1> -builtin 1gt
map -modes=n <A-2> -builtin 2gt
map -modes=n <A-3> -builtin 3gt
map -modes=n <A-4> -builtin 4gt
map -modes=n <A-5> -builtin 5gt
map -modes=n <A-7> -builtin 7gt
map -modes=n <A-8> -builtin 8gt
map -modes=n <A-9> -builtin 99gt
~~~
快速推文。
~~~
" sf : 將文章分章至 Facebook。
map -modes=n sf o javascript:var%20d=document,f='http://www.facebook.com/share',l=d.location,e=encodeURIComponent,p='.php?src=bm&v=4&i=1253986134&u='+e(l.href)+'&t='+e(d.title);1;try{if%20(!/^(.*\.)?facebook\.[^.]*$/.test(l.host))throw(0);share_internal_bookmarklet(p)}catch(z)%20{a=function()%20{if%20(!window.open(f+'r'+p,'sharer','toolbar=0,status=0,resizable=1,width=626,height=436'))l.href=f+p};if%20(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else{a()}}void(0) <Return>
" sp : 將文章分章至 Plurk。
map -modes=n sp o javascript:%20void(window.open('http://www.plurk.com/m?qualifier=shares&content='%20.concat(encodeURIComponent(location.href))%20.concat('%20')%20.concat('(')%20.concat(encodeURIComponent(document.title))%20.concat(')'))); <Return>
~~~
依選取文字搜尋及前往。
~~~
" 於當前分頁。
map -modes=n o -js content.getSelection().toString()!=""?dactyl.execute(":open "+ content.getSelection()):Comm
andExMode().open("open ")
" 於新分頁。
map -modes=n t -js content.getSelection().toString()!=""?dactyl.execute(":tabopen "+ content.getSelection()):C
ommandExMode().open("tabopen ")
~~~
### 提示瀏覽 (surfing with hints)
於 **normal mode** 鍵入 f 及 F 時,Pentadactyl 會對所有的連結 (link) 進行提示 (hints),我們可透過鍵入 hints 的代號來開啟連結,其中 F 多了個背景開啟的屬性。
~~~
" 將提示代號自訂為 asdfghjkl;。
set hintkeys=asdfghjkl;
" 字形、字體調整。
hi Hint font:bold 16px monospace !important; margin:-.2ex; padding: 0 0 0 1px; outline:1px solid rgba(0, 0, 0, .5); background:rgba(255, 248, 231, .8); color:black; text-transform:uppercase;
~~~
![2013-09-30-pentadactyl-02.png](https://box.kancloud.cn/2015-08-18_55d2bba9a5b6f.png "2013-09-30-pentadactyl-02.png")
▲ hints 截圖。
### 外部編輯器
於任何的文字框 (Text Box) **按下 Ctrl + i** 即可使用外部的 editor 編輯。有 Pentadactyl 接軌後就用不怕那些陽春的 editor 了。
~~~
" GVim
set editor='gvim -f +<line> +"sil! call cursor(0, <column>)" <file>'
" Bluefish
set editor='bluefish'
~~~
![2013-09-30-pentadactyl-03.png](https://box.kancloud.cn/2015-08-18_55d2bba9c418c.png "2013-09-30-pentadactyl-03.png")
▲ Ctrl + i 啟用外部編輯器模式。
### 緩衝區 (buffer) / 網頁切換
類似 **TextMate 的 Cmd + T** 以及 [ctrlp.vim](https://github.com/kien/ctrlp.vim) 的功能,可以於 **normal mode**使用關鍵字搜尋並開啟網址。為求與 ctrlp.vim 相同的使用體驗,凍仁把原先快捷鍵 **b** 換成 **Ctrl + p** 了。
~~~
" 使用 Ctrl + p 開啟 buffer。
map -modes=n,v <C-p> -builtin b
~~~
![2013-09-30-pentadactyl-04.png](https://box.kancloud.cn/2015-08-18_55d2bba9df2f8.png)
▲ buffer 比較:上為 Pentadactyl;下為 Vim。
### 資料來源
- [五指操控Firefox的「仿Vim」擴充套件: Vimperator/Pentadactyl | 簡睿隨筆簡睿隨筆](http://jdev.tw/blog/2375/firefox-addon-vimperator-pentadactyl-vim-like)
- [ctrlp.vim : O3noBLOG](https://blog.othree.net/log/2012/11/10/ctrlpvim/)
- [介紹 plugin: ctrlp.vim - Google 網上論壇](https://groups.google.com/forum/#!topic/vim-taiwan/dnuDsKmDRz4)
- [凍仁的筆記: Pentadactyl, Firefox F1 大亂鬥 on Firefox 4](http://note.drx.tw/2011/02/pentadactyl-firefox-f1-on-firefox-4.html)
- [凍仁的筆記: 自訂 Vimium 快捷鍵](http://note.drx.tw/2011/07/chromevimium.html)
- [Vimperator Vs Pentadactyl - vimperator-labs](http://code.google.com/p/vimperator-labs/wiki/VimperatorVsPentadactyl)
- 介紹
- 前言
- 建立開機媒體 (隨身碟、光碟)
- 網路設定
- 套件管理
- 套件庫及鏡像站
- 安裝驅動程式
- 簡易的防火牆 - UFW & GUFW
- 電源管理 - PowerTOP
- Hacking Bash
- Shell Scripts
- Hacking Vim
- Vim 套件管理 - NeoBundle
- Pentadactyl
- 色碼擷取器 - Gpick vs Gcolor2
- 文字界面的字典 sdcv
- 於 Vim 裡使用 sdcv
- 商業版的 Wine - CrossOver
- 藉由 CrossOver 安裝 Microsoft Office 2007
- 虛擬機器 - VMware Player 5
- 增進 SSH 使用效率 - ssh_config
- 遠端桌面軟體 - Remmina
- 密碼管理員 - FPM2
- 密碼管理員 - FPM2Droid
- 視窗管理及工作區 (上)
- 視窗管理及工作區 (下)
- 使用 Clonezilla 打造不死的作業系統
- Ubuntu 系統版本升級
- 使用 Live CD 修復 Debian/Ubuntu 系統
- 檢測硬碟 SMART 健康狀態
- 銷毀資料 - Shred
- 附录
- 將 Markdown 文件轉成 HTML