使用Vimperator制作超简约风格的Firefox

Vimperator是Firefox的一个非常活跃的插件,它的主要特征是全面模仿Vim,也就是把firefox变成了带有模式的浏览器。

对于极客来讲,顺滑的操作、简约的外观、阅读空间的最大化、宏、自定义、命令行什么的最有吸引力了。这也就是我开始玩Vim时的感觉——这玩意什么工具栏、菜单栏一概没有,就是一个光秃秃的窗口,但是却能通过模式获得巨大的力量。

此次研究Vimperator也是受到超Vim控·王威拓同学的启发而进行的,研究了一段时间却发现已经不能自拔。在这09年快要结束的时候,Vimperator业已成为我的年度最佳软件。

作为一个不是那么熟练的Vim爱好者,在没有完全适应它的操作风格时,我更倾向于使用我用了十多年的粘贴,剪切,全选,undo快捷键,于是就研究了vimperatorrc。

我把这个firefox做成了类似于Vim里 ":set go=" 的风格,以及做了些适合我的快捷键修改,然后记录在了下面


1.相关的主题和插件

主题我选择了whitehart,这个主题最大的特点就是简单,非常非常简单。

另外,为了使状态栏图标只有Gmail Manager,我又安装了一个Organize Status Bar

2.最大可能地精简浏览器元素

Vimperator把菜单栏,工具栏,浏览栏什么的全部隐藏了,但是对标签栏的精简它还做得不够。

为此,我研究了user-Chrome.css,这个文件在Windows7的环境下,位于

<SystemDisk>\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<code>\chrome

里。

我在这个文件的结末,加入了如下代码

.tabbrowser-tabs .tabs-newtab-button,
{
display: none !important;
}

这些代码把“新建标签按钮”隐藏了。

另外,在about:config中,找到如下字段:

browser.tab.closeButtons

并且把它的值设为2,标签上的关闭标签按钮就被隐藏了。

另外,关于这个字段的值,有这样的意义:

0:仅在活动的标签页上显示关闭按钮

1:在所有的标签页上显示关闭按钮

2:不显示任何的关闭按钮

3:在当前所有标签页的最后显示一个关闭按钮

现在我们已经得到一个 ":set go=" 风格的界面了。

3.我的vimperatorrc

vimperatorrc是Vimperator的配置文件。啃完了:help之后,我做了一个比较适合自己的vimperatorrc。

需要解释的是:

    • noremap是无递归地改变键位,也就是按照初始键位来表达新的键位,哪怕初始键位被改变了也可以表达原有的功能。
    • inoremap是在输入模式下,与noremap相同的功能。
    • cnoremap是在控制台模式下,与noremap相同的功能。

"在标签上显示数字,方便使用b+<num>来选择特定标签
:set guioptions=rbN

"更舒服的缩放键,用=代替+
noremap = +

"更舒服的导航键,h后退l前进
map h :back<CR>
map l :forward<CR>

"用q关闭
noremap Q q
inoremap Q q
cnoremap Q q
map q :qall<CR>

"恢复ctrl+b管理书签
noremap <C-b> <C-v><C-b>
inoremap <C-b> <C-v><C-b>
cnoremap <C-b> <C-v><C-b>

"改变标签,n前一个m后一个
noremap n <C-p>
noremap m <C-n>

"使用p代替n的“查找下一个”功能
noremap p n

"5倍速的jk滚屏
noremap j 5j
noremap k 5k

"停止载入改成了s
map s :stop<CR>

"使用a代替A的收藏状态控制
noremap a A

"使用<C-V>代替<C-v>的暂停Vimperator监听
noremap <C-V> <C-v>
inoremap <C-V> <C-v>
cnoremap <C-V> <C-v>

"使用<C-Z>代替<C-z>的停止Vimperator监听
noremap <C-Z> <C-z>
inoremap <C-Z> <C-z>
cnoremap <C-Z> <C-z>

"使用<C-o>和<C-i>在URL的末尾数加1
noremap <C-o> <C-a>
noremap <C-i> <C-x>

"使用Windows风格的undo,复制,粘贴,剪切,全选操作
noremap <C-z> <C-v><C-z>
inoremap <C-z> <C-v><C-z>
cnoremap <C-z> <C-v><C-z>

noremap <C-v> <C-v><C-v>
inoremap <C-v> <C-v><C-v>
cnoremap <C-v> <C-v><C-v>

noremap <C-x> <C-v><C-x>
inoremap <C-x> <C-v><C-x>
cnoremap <C-x> <C-v><C-x>

noremap <C-a> <C-v><C-a>
cnoremap <C-a> <C-v><C-a>
inoremap <C-a> <C-v><C-a>

noremap <C-c> <C-v><C-c>
cnoremap <C-c> <C-v><C-c>
inoremap <C-c> <C-v><C-c>

这些就是我的Vimperator键位设置,它让我的Vimperator操作更流畅。

综上,就是我近期对Vimperator的研究。另外还有正在做的Vimperator帮助文件的翻译。

Leave a comment

14 Comments.

  1. 你说这篇文章看的人会有多少呢?

  2. 浏览量还不错,Google analytics告诉我们,这篇文章从发布到现在已有30人看过

  3. 30人,加一块儿还没有我们班人多呢

  4. 也行了,都是Google来的,总比没有强

  5. 该死的墙奸!

  6. 您的那个去除“新建标签按钮”的方法已经不能用了,我用的这个:把导航栏各种无用的都去了
    .tabbrowser-tabs .tabs-alltabs-button,
    .tabbrowser-tabs .tabs-alltabs-box-animate,
    .tabbrowser-tabs .tabs-newtab-button,
    .tabbrowser-tabs .tabs-closebutton {display: none !important;}

    • 是吗,哈哈,我明儿试一试。我已经不用Vimperator了,现在回到Chrome的怀抱里了因为有了Switchy Proxy

  7. summerflower

    看起来不错

  8. 有个问题,如果把h,l变成了前一个标签和后一个标签,则在visual模式下就无法使用h和l向前选择和向后选择了。请问这个该怎么处理呢?

    • 好像就得换个绑定了。不过visual模式下的键位似乎也可以重新绑定,这个得再看看vimperator的文档

  9. 多谢提醒,引用链接已经更新。

  10. 学习了~ 呵呵
    从佳软那里过来的

Leave a Reply


[ Ctrl + Enter ]

Trackbacks and Pingbacks: