zoukankan      html  css  js  c++  java
  • 【转】让Firefox像vim一样操作

    【转】让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>
    来定义两个映射。这样会比较保护小指一点吧。那么为什么需要noremap这个东西呢?看下面这个例子:
                 :map d D
                 :map D d
    这个会怎么样呢?会让Firefox死翘翘呀!你按下d,它变成D,又变成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一样,很多命令前面是可以加数字的。

    转自:http://www.cnblogs.com/zjfdbz/archive/2012/08/17/2644658.html

  • 相关阅读:
    NOIP 2016 提高组 复赛 Day2T1==洛谷2822 组合数问题
    Codevs 1710 == POJ 1190 生日蛋糕 == 洛谷P1731
    [网络流24题] COGS 750 栅格网络流
    [网络流24题] COGS 运输问题1
    狂K 线段树
    Graph coloring技能树
    智能体大赛酱油记
    graph coloring学习记录
    湖北省赛酱油记
    CCCC酱油记
  • 原文地址:https://www.cnblogs.com/pengzhiwei/p/2671882.html
Copyright © 2011-2022 走看看