让Firefox像vim一样操作
转自:http://blog.cykerway.com/post/289
鼓捣了两个小时Pentadactyl,真是个叫人语无伦次的东西,硬是把我从Chromium又拉回到Firefox了。
Pentadactyl是源于Vimperator的一个Firefox插件,但是装上这个插件之后Firefox就不叫Firefox了叫Vim……
这个插件有一个缺点是浪费鼠标。
前奏
装了这个插件后启动Firefox时界面可能会有很大变化,熟悉的各种XX栏可能都会消失。恢复的办法是
:set
go+=mBT
set
go-=mBT
让它们消失吧。一旦你习惯了Pentadactyl你不会想看见它们的。
下文中<C-x>表示Ctrl+x,<A-x>表示Alt+x,<S-x>表示Shift+x,<M-x>表示Meta+x。
使用这个插件需要一定的Vim基础。最起码的,要知道模式的概念以及甩Esc可以回到Normal模式。还要知道:help是个有用的命令。
第一课 导航
以下是有关导航的基本命令,有了这些就可以随心所欲浏览页面了。
页面导航
- h,j,k,l:四大金刚
- <C-d>:下半页
- <C-u>:上半页
- <C-f>/<Space>:下一页
- <C-b>/<S-Space>:上一页
- gg:页首
- G:页尾
- [num]gg/[num]G/[num]%:跳至页面num%处
标签导航
- <C-n>/gt:下一个标签
- <C-p>/gT:上一个标签
- g0/g^:第一个标签
- g$:最后一个标签
- <C-6>:在当前标签和最近浏览的非当前标签之间切换
历史记录导航
- H/<C-o>:在历史记录中后退
- L/<C-i>:在历史记录中前进
第二课 网页的打开与关闭
要打开一个网页需要进入Command-line模式,用过Vim的一定不会陌生,就是按下冒号:后的那个模式。在Command-line模式下有如下基本命令:
- o/O:在当前标签打开
- t/T:在新标签打开
- w/W:在新窗口打开
其中小写与大写的区别是,小写会直接执行,大写会将当前URL作为参数显示出来,可以修改后回车确认再执行。
要关闭一个标签,在Normal模式下:
- d/D:关闭当前标签
区别是,用d关闭后选择右边的标签,用D关闭后选择左边的标签。
还有一些常用的命令:
- u:打开最近关闭的标签
- <C-c>:停止载入
- r/R:重新载入当前页面(R无视cache)
- gh:回主页
- gu:打开上级目录
- gU:打开根目录
要退出Firefox怎么办呢?有两种方法:
- ZQ:退出Firefox
- ZZ:保存已打开的页面并退出Firefox
第三课 页面控制
- <C-g>:查看页面基本信息
- g<C-g>:查看页面详细信息
- gf:在页面和其源代码之间切换
- gi:定位到最近输入的文本框。如果没有最近输入的文本框,则定位到第一个文本框
- zi/+/zm:放大页面
- zo/-/zr:缩小页面
- zz:恢复页面至初始大小
区别是,zm和zr更狠。
- y:复制当前URL到剪贴板
- p/P:打开剪贴板中的URL(p=当前标签,P=新标签)
第四课 页面内容查找
和Vim中基本相同,也是用/和?
- /:向前查找
- ?:向后查找
- n:查找下一个
- N:查找上一个
- *:向前查找当前光标下的单词
- #:向后查找当前光标下的单词
第五课 页面导航进阶
现在我们来看如何打开网页中的链接。这需要进入Pentadactyl的Hint模式。有两种方法可以使用:
- f/F:进入QuickHint模式(f=当前标签,F=新标签)
- ;{mode}:进入extended hint模式(不同的{mode}会导致不同的结果)
最简单的,当前页面里有个链接,按下f键,链接上会出现数字,输入那个数字,就跳到那个链接去了。如果按下的是F键,则会在新标签中打开那个链接。如果按下的是;键,则还需要按下{mode},具体请参见help。
在学会了爬链接之后我们再熟悉一下标签之间的跳转(确切地说应该是buffer之间的跳转):
- B:显示所有buffer
- b:跳转到指定buffer
按下B键后可以看到所有的buffer,标记%的那个就是当前buffer,标记#的那个是alternate buffer。按下b键后会让你选择,你可以用数字或关键字跳转到指定buffer,也可以输入#跳转到alternate buffer。
第六课 书签
Pentadactyl支持Firefox的标准书签(Bookmarks)和自身特有的Quickmarks。
对Bookmarks的操作:
- a:添加书签
- A:添加/删除(Toggle)当前页面为书签
- bmarks [url]:列出所有书签。若url不为空,列出(关键字)匹配url的书签
- delbm [url]:删除(关键字)匹配url的书签。若url为空,删除当前页面为书签
对Quickmarks的操作:
- M{a-zA-Z0-9}:添加当前页面到Quickmark
- go{a-zA-Z0-9}:在当前标签页跳转到指定的Quickmark
- go{a-zA-Z0-9}:在新标签页跳转到指定的Quickmark
- qmarks [arg]:列出所有Quickmarks。若arg不为空,列出(关键字)匹配arg的Quickmarks
- delqm {arg}:删除(关键字)匹配arg的Quickmarks
第七课 自定义键位映射
不爽的人各有各的不爽,不能自定义的工具不是好工具,是吧。
定义键位映射需要在Command-line模式下进行,需要的命令有:
- map {lhs} {rhs}:定义键位映射
- noremap {lhs} {rhs}:以-builtin方式定义键位映射
- unmap {lhs}:取消键位映射
- mapclear:清除键位映射
举个例子吧。J和K两个键位闲着也是闲着,不如用它们来翻页。那我就可以用
:map J <C-d>
:map K <C-u>
:map d D
:map D d
:noremap d D
:noremap D d
这样子以-builtin方式定义,按下d,它变成D后就不再管其他的映射了,就不会出现死循环了。
Pentadactyl更强大的地方在于可以对不同模式进行不同的键位设定哦。Pentadactyl有如下几种主要的模 式:Normal(n),Visual(v),Insert(i),TextEdit(t),Command-line(c)。其实上面的四个命令都是针 对Normal和Visual模式的。要想定义其他模式下的键位映射,可以用如下格式的命令:
- [n|v|i|t|c]map:(同上)
- [n|v|i|t|c]noremap:(同上)
- [n|v|i|t|c]unmap:(同上)
- [n|v|i|t|c]mapclear:(同上)
功能都是一样的,所以就不说了。
第八课 保存设定
哎呀你不是已经退出了吧,退出的话刚才自定义的那些设定就都没有了啦!在退出之前要快快保存才是。保存的命令很简单:
- mkp[!]:保存设定到mkpentadactylrc(!表示强制执行)
这个文件一般是$HOME/.mkpentadactylrc。这样子自己的设定可以统统保存和备份,万一到新机器上直接copy过来用就是了。
第九课 打开Firefox的对话框
到这里估计你已经习惯了Pentadactyl吧。不过有时候还是需要和Firefox打交道,比如设置个代理什么的。这时候有一个Command-line模式下的命令:
- dia:打开对话框
输入:dia {name}就可以打开指定的对话框了。对于常用的对话框,还有更简单的命令,例如pref,addons等等。
到这里你应该发现很多命令都可以用Tab轮询吧……
第十课 实用技巧
写到这里主要内容就算是完成了。最后介绍一点使用技巧,因人而异,也许你会用的上。
-
首先是gi的使用。这真的是个非常有用的命令,尤其是在搜索引擎上。你可以多按ESC使得页面停留在Normal模式下。当需要输入文字时按gi,就会自动定位到文本框了。
-
用<C-n>/<C-p>翻页是一个比较好的选择。但是在Insert模式下(比如在文本框中输入文字的时候)这两个键位没有被定义。所以按<C-n>的时候会打开一个新窗口,太糟糕了。解决一下:
:imap <C-n> <Esc>:tabnext<CR>
:imap <C-p> <Esc>:tabprev<CR>
-
想要快速搜索一个单词?只要在Firefox中设置好默认搜索引擎,按o键再输入那个单词就可以了。如果那个单词已经在剪贴板中,直接按p键更快。
-
在浏览器中打字感到厌烦?尝试一下外部编辑器吧。在Insert模式下输入<C-i>可以打开指定的外部编辑器,以Vim为例,写好之后:wq退出即可。如果不想要这么麻烦,可以输入<C-t>进入内置的Vi模式,也很不错。
-
看教程点Next是不是很罗嗦?有了Pentadactyl,你只需要按]]即可。同样的,[[相当于点击了页面中的Prev。来这里体验一下:http://docs.python.org/py3k/tutorial/modules.html
-
修改nextpattern/previouspattern使之支持Google搜索结果的翻页:
:
set
nextpattern=\s*下一页|下一张|下一篇|下页|后页\s*,^\bnext\b,\\bnext\\b,^>$,^(>>|»)$,^(>|»),(>|»)$,\\bmore\\b
:
set
previouspattern=\s*上一页|上一张|上一篇|上页|前页\s*,^\bprev|previous\b,\\bprev|previous\\b,^<$,^(<<|«)$,^(<|«),(<|«)$
-
看Blog翻页也很烦吧?试试<C-a>/<C-x>,它们会增减URL最后的数字,哈哈反正我用着是很有爽感啊。
-
就像Vim一样,很多命令前面是可以加数字的。