虽说标题是插件,但实际上我都写在.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[1] == 'http') {
var url = 'https://' + result[2]
} else {
var url = 'http://' + result[2]
}
liberator.execute('normal :open ' + url + '<CR>')
}
}
EOF
command ssl js toggleSSL()
这样便可以直接通过":ssl"来在http和https之间切换了,当然你也可以映射成一个快捷键,这样更方便,但我更喜欢键入命令,
我不太喜欢记太多快捷键。
不知道你没有这样的体验,当你通过google搜索出一大堆网站之后,随便点了一个网站之后,发现reset了,是不是很郁闷,
虽然你有代理,并且使用了AutoProxy,但是这不起作用,因为google的搜索結果并不是直接引向搜索页面,而是通过google重定向到
搜索页面的,搜索页面的网址是附在它的url参数内。这时就需要直接打开搜索页面,但是手工去这个操作很麻烦,于是就有了下面的
脚本:
:js << EOF
ungoogle = function () {
url = buffer.URL
url = getUrlParam(url, 'url')
liberator.echo('opening ' + url)
liberator.open(url)
}
// copy from http://goo.gl/qf7J
function getUrlParam(url, name)
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec(url);
if( results == null )
return "";
else
return unescape(results[1]);
}
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')[0];
elems = form.getElementsByTagName('input');
eurlElem = null;
for (i = 0; i < elems.length; i++) {
if (elems[i].name == 'u')
eurlElem = elems[i];
}
if (eurlElem) {
url = eurlElem.value;
liberator.open(url)
}
} else {
liberator.open('http://www.qlba8.com/proxy.html');
maxWaitInterval = 200;
maxWaitCount = 25; // 5s
waitCount = 0
timeout = function() {
waitCount++;
if (waitCount > maxWaitCount) {
liberator.echoerr('cannot connect');
}
doc = window.content.document;
form = doc.getElementsByTagName('form')[0];
if (!form) {
setTimeout(timeout, maxWaitInterval);
return
} else {
form.target = ''
eurl = form.getElementsByTagName('input')[0]
eurl.value = url
form.submit()
}
}
setTimeout(timeout, maxWaitInterval);
}
}
EOF
command proxy :js toggleProxy()
之后便可以使用命令":proxy"在使用web代理和直接访问之间切换了。
以上就是我今天要介绍的三个小插件,如果你有心的话,便知道它们的相关性很强。