[转]Pentadactyl,让firefox按vim习惯运行的插件

Pentadactyl

2011-02-05 22:37:59 /Mozilla/Firefox

鼓捣了两个小时Pentadactyl,真是个叫人语无伦次的东西,硬是把我从Chromium又拉回到Firefox了。

Pentadactyl是源于Vimperator的一个Firefox插件,但是装上这个插件之后Firefox就不叫Firefox了叫Vim……

这个插件有一个缺点是浪费鼠标。

前奏

装了这个插件后启动Firefox时界面可能会有很大变化,熟悉的各种XX栏可能都会消失。恢复的办法是

1
set go+=mBT

这样子可能会熟悉一些。不过还是建议用

1
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两个键位闲着也是闲着,不如用它们来翻页。那我就可以用

1
2
:map J <C-d>
:map K <C-u>

来定义两个映射。这样会比较保护小指一点吧。那么为什么需要noremap这个东西呢?看下面这个例子:

1
2
:map d D
:map D d

这个会怎么样呢?会让Firefox死翘翘呀!你按下d,它变成D,又变成d,又变成D……就死翘翘啦!正确的做法是:

1
2
: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>的时候会打开一个新窗口,太糟糕了。解决一下:
    1
    2
    :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搜索结果的翻页:
    1
    2
    :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一样,很多命令前面是可以加数字的。

from http://blog.cykerway.com/post/289

firefox6.x上使用google工具栏

firefox6正式版已经发布,插件一般总是要滞后几天;不过这次,google工具栏比较悲剧,官方不支持firefox6了,很可恶。

以前修改插件里的文件而在插件升级版发布前、在新版本firefox里使用,对google工具栏如法炮制,果然还是有效的。

方法如下:

修改文件

/home/[user-main-folder]/.mozilla/firefox/lxyp34or.default/extensions/{3112ca9c-de6d-4884-a869-9855de68056c}/install.rdf

windows下,应该在X:\Documents and Settings\[user-main-folder]\Application Data\Mozilla\Firefox\Profiles\esx4b5b6.default\extensions\xxxx\install.rdf

第17行,把        <em:maxVersion>4.0.*</em:maxVersion>

改成

<em:maxVersion>7.0.*</em:maxVersion>

即可。才发现使用firefox 5时就修改过这个值了,不过当时改成了5,这次改成7,下次fx升级就不用改了。

wordpress插件Quotmarks Replacer:解决wordpress英文引号自动转为中文引号的问题

Quotmarks Replacer

Quotmarks Replacer disables wptexturize function that keeps all quotation marks and suspension points in half-width form.

Quotmarks Replacer 通过禁用 wptexturize 函数,解决 WordPress 自动将半角的单引号、双引号和省略号转换为全角标点的问题。使后台输入的标点格式与前台读者浏览的标点格式保持一致。并且对多站点 (WordPress Mu) 有良好的支持。

http://wordpress.org/extend/plugins/quotmarks-replacer/

让版本帝firefox5下“被不可用”的插件重新可用

firefox不知道是抽的哪门子风,要跟google chrome当抢着做版本帝,一次次的提醒用户升级。

刚才使用fedora15 yum升级后,发现firefox升级到5.0了,启动后,果然好几个插件都不能用了。因为之前修改过一些插件的.xpi安装文件,这些插件可以到网上重新下载,然后修改了再安装,是可以的,但这是个麻烦的操作。因为firefox插件是安装在用户目录下的,那么直接修改安装后的文件,是否也可以达到同样效果呢?

于是试着做。

进入目录

gnu/linux下

/home/[user-home-folder]/.mozilla/firefox/lxyp34or.default/extensions

windows下

X:\Documents and Settings\[user-main-folder]\Application Data\Mozilla\Firefox\Profiles\esx4b5b6.default\extensions\

里面有多个目录/文件,

[feng@fsc extensions]$ ls
{3112ca9c-de6d-4884-a869-9855de68056c}  firebug@software.joehewitt.com.xpi
{88c7b321-2eb8-11da-8cd6-0800200c9a66}  firegestures@xuldev.org.xpi
{8f8fe09b-0bd3-4470-bc1b-8cad42b8203a}  pig1717@gmail.com.xpi
autoproxy@autoproxy.org                 screencaptureelite@plugin
{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}  toolbar@alexa.com.xpi
{dc572301-7619-498c-a57d-39143191b318}

多数半没有便于理解的名字,一个个进去看,这些目录里一般都有install.rdf文件,这就是需要修改的文件,以google工具栏为例:

修改其中的

<em:maxVersion>xxxx</em:maxVersion>

一行,版本号大于5.0就可以了,修改保存。

把不可用的插件里都按此法修改一遍。有些插件是.xpi文件,修改文件名后缀为.zip,解压,并修改其中install.rdf文件,zip压缩,再改后缀为.xpi。

重启firefox即可。

easy dragtogo+是.xpi文件,还没有修改时抓的图。