阅读(2453) (0)

GNU/Linux 使用Pentadactyl操控Firefox

2017-07-14 09:18:38 更新

Pentadactyl 是个号称「只用五只手指」就可以完全操控 Firefox 的 Vim-like 套件,而且相似度极高,不管是 hjkl 的操作模式、自订快捷键 (keymap) 还是更换布景主题 (colorsheme) 它都办得到。

它与 Vimperator 的差异在于:前者是在 Firefox 实作出 100% 的 Vim;后者优化了浏览上的使用者体验,并标榜它是可用、简洁、稳定及具有设计的。事实上后者对于新版的 Firefox 较不友善,常跟不上更新 (或许是该怪 Firefox 更新速度过快),除此之外前者的高自订性以及其它的林林总总让冻仁最后选择了 Pentadactyl。

2013-09-30-pentadactyl-01.png

▲ Pentadactyl 操作手册 (:help)。

快速上手

若 Firefox 版本太新,请至 Pentadactyl 官方网站手动安装 Nightly builds 的版本。

2013-09-30-pentadactyl-05.png

 Add-ons | Mozilla 网站上的 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

▲ 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

▲ Ctrl + i 启用外部编辑器模式。

缓冲区 (buffer) / 网页切换

类似 TextMate 的 Cmd + T 以及 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

▲ buffer 比较:上为 Pentadactyl;下為 Vim。

资料来源