marlonyao 发表于 2013-1-24 21:03:04

几个Vimperator小插件

虽说标题是插件,但实际上我都写在.vimperatorrc配置文件中。

第一个是用来在http和https之间切换的插件。很多网页同时有http和https版本,在两个之间切换比较麻烦,所以就写了这个,
下面所有的代码都放在.vimperatorrc中,如果在windows下则放在_vimperatorrc下。
:js << EOF    toggleSSL = function() {var regex = /^(http|https):\/\/(.*)$/;var result = regex.exec(buffer.URL);if (result) {if (result == 'http') {var url = 'https://' + result} else {var url = 'http://' + result}liberator.execute('normal :open ' + url + '<CR>')}}EOFcommand ssl js toggleSSL()
这样便可以直接通过":ssl"来在http和https之间切换了,当然你也可以映射成一个快捷键,这样更方便,但我更喜欢键入命令,
我不太喜欢记太多快捷键。



不知道你没有这样的体验,当你通过google搜索出一大堆网站之后,随便点了一个网站之后,发现reset了,是不是很郁闷,
虽然你有代理,并且使用了AutoProxy,但是这不起作用,因为google的搜索結果并不是直接引向搜索页面,而是通过google重定向到
搜索页面的,搜索页面的网址是附在它的url参数内。这时就需要直接打开搜索页面,但是手工去这个操作很麻烦,于是就有了下面的
脚本:
:js << EOF    ungoogle = function () {url = buffer.URLurl = getUrlParam(url, 'url')liberator.echo('opening ' + url)liberator.open(url)    }// copy from http://goo.gl/qf7Jfunction getUrlParam(url, name){name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS = "[\\?&]"+name+"=([^&#]*)";var regex = new RegExp( regexS );var results = regex.exec(url);if( results == null )return "";elsereturn unescape(results);}commands.addUserCommand (["ungoogle"], "extract url from google and open it",function (args) {ungoogle()});EOF
然后通过":ungoogle"可以直接打开搜索网页。你可能很难尝试这条命令,因为如果一切正常的话,google会自动重定向。
幸运的是,我们生活在天朝,不正常的时候并不少。你只要搜索技术文章,可能就会搜到blogspot或者google group上去,
点击它,接下的事就不说了。另外,如果不想reset,可以试试google的https搜索,但是我还不知道如何在Vimperator下
如何默认设置成使用https搜索,哪位知道,不妨告知下,不胜感激。


如果有些网站reset了,而本地代理服务器有时会不起作用,最近TOR就很不灵光,这时Web代理是个比较好的选择。我比较喜欢的代理是这个http://qlba8.cn/xin.html。同样地,我选择写vimperator脚本来自动化一些事情,下面的有点长:
toggleProxy = function() {url = buffer.URL;var regex = /^http:\/\/\w+\.ip156\.com\/.*$/;if (regex.exec(buffer.URL)) {doc = window.content.document;form = doc.getElementsByTagName('form');elems = form.getElementsByTagName('input');eurlElem = null;for (i = 0; i < elems.length; i++) {if (elems.name == 'u')eurlElem = elems;}if (eurlElem) {url = eurlElem.value;liberator.open(url)}} else {liberator.open('http://www.qlba8.com/proxy.html');maxWaitInterval = 200;maxWaitCount = 25; // 5swaitCount = 0timeout = function() {waitCount++;if (waitCount > maxWaitCount) {liberator.echoerr('cannot connect');}doc = window.content.document;form = doc.getElementsByTagName('form');if (!form) {setTimeout(timeout, maxWaitInterval);return} else {form.target = ''eurl = form.getElementsByTagName('input')eurl.value = urlform.submit()}}setTimeout(timeout, maxWaitInterval);}}EOFcommand proxy :js toggleProxy()
之后便可以使用命令":proxy"在使用web代理和直接访问之间切换了。

以上就是我今天要介绍的三个小插件,如果你有心的话,便知道它们的相关性很强。
页: [1]
查看完整版本: 几个Vimperator小插件