Surfingkeys is awesome

一直在 Chrome 中使用 vimium 实现 vim 键绑定操作,这个插件只是实现了一些基本的功能,基本是没什么扩展性。所以当我看到小众软件介绍这个 Surfingkeys 时,第一时间就装起来试用。不得不说这个插件做得真是太棒太强大了!

Surfingkeys help

除了 vimium 有的功能它都有之外,还拥有许多实用的键绑定,随时在页面输入 ? 就可以看到帮助,一边用一边学,不用特意去记忆。下面说说我最喜欢的几个功能:

注意所有按键都是区分大小写的,如 E = Shift-e

按 E/R 切换标签

在 vimium 中,最大的问题是它只能针对当前的 tab 操作。换言之,不能在 vim 操作上下文进行 tab 切换。虽然说 Chrome 的快捷键也可达成类似的效果,但按2个键必须比按3个组合键方便。更何况我们还保留了重映射和自定义扩展的权力。没错, Surfingkeys 这货还实现了 map 功能。

勘误,viumium 是可以切换 tab 的,感谢 Qiao Guo 的指正

按 sg/sw 等进行搜索

选中关键词,按 sg 使用 google 搜索, sog 是站内搜索;按 sw 是 bing 搜索, sow 同理是只搜索本站。相当实用!

按 t/T 新建 tab 或者切换 tab

Switch Tab
随着你的 tab 越开越多,想找回之前某个 tab 就不容易了吧。按一下 T ,输入 tab 的关键字,实时过滤,装逼利器啊。

按 [[ 和 ]] 进行翻页

这也是 vimium 所缺失,实又很实用的功能。就是帮你找到页面上的上一页、下一页链接,然后自动地帮你点击。可惜的是,插件本身只认识『英文』。由于当前版本并不支持在 setttings 中指定自定义的正则表达式,要让它认识”上一页、下一页”这些中文,只能通过覆盖它的键绑定来实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mapkey('[[', '#1Click on the previous link on current page', function() {
var prevLinks = $('a').regex(/((<<|prev(ious)?|上一页|上一封)+)/i);
if (prevLinks.length) {
clickOn(prevLinks);
} else {
walkPageUrl(-1);
}
});
mapkey(']]', '#1Click on the next link on current page', function() {
var nextLinks = $('a').regex(/((>>|next|下一页|下一封)+)/i);
if (nextLinks.length) {
clickOn(nextLinks);
} else {
walkPageUrl(1);
}
});

按 Q 进行翻译

Translation

这下可以把『划词翻译』这个插件也去掉了,一直觉得划完之后会出来的图标个人感觉挺干扰的,毕竟多数的划选操作并不是为了翻译。现在,你可以选中想要翻译的单词,按 Q 即会弹出一个半透明的窗口,显示其中文解释。为什么要强调这个窗口是半透明的呢?因为我在用划词翻译感觉最不方便的是很多单词是在 图片 里面的。这个时候划词是没毛线作用的,只能是新开一个窗口去有道查一把。而这个半透明窗口真是太棒了,我只要按 Q 激活它,然后输入我想查的单词,中间不用担心这个窗口会把我想看的内容给挡住了。

不过,自带的翻译界面太简陋了。完全不能满足到我的需求,最起码音标、真人发音的什么的要一起显示下吧!好在 Surferingkeys 的扩展性非常强悍,打开它的 Settings ,加入以下代码你就可以得到一个相对完善的翻译界面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mapkey('Q', '#8Open omnibar for word translation', function() {
Front.openOmniquery({
url: "https://api.shanbay.com/bdc/search/?word=",
query: Visual.getWordUnderCursor(),
style: "opacity: 0.8;",
parseResult: function(res) {
var res = eval("a=" + res.text);
if (res.data.definition) {
var tmp = [];
for (var reg in res.data.pronunciations) {
tmp.push(`[${reg}] ${res.data.pronunciations[reg]}`);
tmp.push(`<audio src="${res.data[reg+'_audio']}" controls></audio>`);
}
tmp.push(res.data.definition);
return [ `<pre>${tmp.join('\n')}</pre>` ];
}
return [res.data.definition || res.msg];
}
});
});

总结

总体来讲 Surfingkeys 比 vimium 强的不要太多。唯独就是滚动的效果没有 vimium 那么干脆,而且距离实在太短了。你可以通过 settings.scrollStepSize 来调整滚动的幅度,默认值的70,我设的是150。

Share Comments