概述

Surfingkeys是Chrome浏览器的一个扩展插件,它使得在大多数情况下,我们得以以快捷键的方式与Chrome浏览器进行交互。使用快捷键?可打开Surfingkeys帮助页。

鼠标点击

快捷键 描述
f 在当前标签页打开链接,如果拨号键有重叠按SHIFT,按下拨号键的大写字母形式,可强制在新标签页打开链接
cf 在新标签页打开多个链接
gi 跳到第一个输入框
i 选择输入框

滚动页面/元素

快捷键 描述
j 向下滚动
k 向上滚动
J 向下滚动一页,自定义
K 向上滚动一页,自定义
G 滚到最下边
gg 滚到最上边
h 向左滚动
l 向右滚动
0 滚到最左边
$ 滚到最右边
cs 切换滚动目标
cS 重置滚动目标
w 切换frames

标签页

快捷键 描述
g0 跳到第一个标签页
g$ 跳到最后一个标签页
x 关闭当前标签页
X 恢复刚关闭的标签页
gx0 关闭左侧所有标签页
gx$ 关闭右侧所有标签页
yt 复制当前标签页

网页浏览

快捷键 描述
su 用VIM编辑器编辑当前地址,按下:w在新标签页打开编辑后地址,按下:q不打开编辑后地址
S 后退
D 前进
r 刷新当前标签页
B 基于标签页访问历史,后退一个标签页
F 基于标签页访问历史,前进一个标签页

搜索选中文本

快捷键 描述
sg 用谷歌搜索选中文本,在新标签页打开

剪贴板

快捷键 描述
cc 在新标签页打开选中的网址或系统剪贴板里的网址
ya 复制链接元素链接
yd 复制当前正在下载的链接
yy 复制当前地址
yg 截屏
yG 截长屏,当存在滚动条时,“yg”和“yG”体现区别
yS 截屏当前滚动对象
ymv 选择复制多个指定文本
ymc 复制表格的多列

搜索栏

快捷键 描述
go 在当前标签页打开网页。输入关键词,在候选数据源(包括“最近关闭,书签,访问历史记录”数据)中选择匹配项可直接打开,否则用谷歌搜索关键词
t 在新标签页打开网页。输入关键词,在候选数据源(包括“最近关闭,书签,访问历史记录”数据)中选择匹配项可直接打开,否则用谷歌搜索关键词
b 遍历书签
<Ctrl-.> 显示下一页搜索结果,针对go,t和b快捷键情境
<Ctrl-,> 显示上一页搜索结果,针对go,t和b快捷键情境
向下方向键/ 切到下一个匹配项,针对go,t和b快捷键情境
向上方向键/ 切回上一个匹配项,针对go,t和b快捷键情境
Q 打开搜索栏查单词
ab 保存当前页面作为书签
;db 从书签删除当前网址

可视模式

快捷键 描述
v 切换可视模式
0 跳到行首
$ 跳到行尾
l 前进一个字符
h 后退一个字符
j 下一行
k 上一行
) 前进一个句子
( 后退一个句子
} 前进一个段落
{ 后退一个段落
/ 在当前页查找
* 在当前页查找选中文本
n 下一处查找命中
N 上一处查找命中
点击光标下的元素,很好的“f”和“cf”快捷键的补充机制

Chrome内置功能

快捷键 描述
;j 关闭下载完毕的提示框,如果下载未完成,则取消下载,并且会清空下载管理器内容
gb 打开书签管理器
gd 打开下载管理器
gs 查看网页源码

类Vim书签

快捷键 描述
m 定义类Vim书签。如果定义书签名称位于a-z范围内,那么书签有效作用域限于定义所处标签页;如果定义书签名称位于A-Z0-9范围内,那么书签有效作用域跨标签页
跳转到类Vim书签。如果定义书签名称位于a-z范围内,那么跳转到书签定义所对应页面位置;如果定义书签名称位于A-Z0-9范围内,那么在当前标签页打开书签定义所对应页面

备注:基于使用简化考虑,只考虑a-zA-Z0-9类Vim书签名称

其他

快捷键 描述
;s 在“Chrome浏览器内置PDF阅读器”与“Surfingkeys PDF阅读器”间切换
在当前网站开关Surfingkeys

自定义配置


// hints颜色
Hints.style('border: solid 3px #552a48; color:#efe1eb; background: initial; background-color: #552a48;');

// 返回上一个页面
mapkey('H', '#4Go back in history', function() {
    history.go(-1);
}, {repeatIgnore: true});

// 前进到下一个页面
mapkey('L', '#4Go forward in history', function() {
    history.go(1);
}, {repeatIgnore: true});

// 关闭当前页面
mapkey('d', '#3Close current tab', function() {
    RUNTIME("closeTab");
});

unmap('u');
// 重新打开刚才关闭的页面
mapkey('u', '#3Restore closed tab', function() {
    RUNTIME("openLast");
});

// 切换到左边的标签
mapkey('h', '#1previous tab', function() {
   RUNTIME('previousTab');
});

// 切换到右边的标签
mapkey('l', '#1next tab', function() {
    RUNTIME('nextTab');
});

// 向下滚动一页
mapkey('J', '#2Scroll a page up', function() {
    Normal.scroll("pageDown");
}, {repeatIgnore: true});

// 向上滚动一页
mapkey('K', '#2Scroll a page down', function() {
    Normal.scroll("pageUp");
}, {repeatIgnore: true});

unmap('F');
// 在新标签打开链接
mapkey('F', '#1Open a link in new tab', function(){
    Hints.create("", Hints.dispatchMouseClick, {tabbed: true});
});

unmap('o');
// 在当前标签打开url
mapkey('o', '#8Open an URL in current tab', function(){
    Front.openOmnibar({type: "SearchEngine", extra: "b",tabbed:false});
    //Front.openOmnibar({type: "URLs", extra: "getAllSites",tabbed: true});
});

// 在新标签打开url
mapkey('t', '#8Open an URL in new tab', function(){
    Front.openOmnibar({type: "SearchEngine", extra: "b",tabbed:true});
});

//根据剪贴板的文字在当前标签用搜索引擎搜索
mapkey('p', '#0search text from clipboard in current tab', function() {
    Clipboard.read(function(response) {
        window.location.href = 'https://www.baidu.com/s?wd=' + response.data;
    });
});

//根据剪贴板的文字在新标签用搜索引擎搜索
mapkey('P', '#0search text from clipboard in new tab', function() {
    Clipboard.read(function(response) {
        tabOpenLink('https://www.baidu.com/s?wd=' + response.data);
    });
});

// 向下滚动一页
mapkey('<Ctrl-f>', '#0Scroll a page up', function() {
    Normal.scroll("pageDown");
});

// 向上滚动一页
mapkey('<Ctrl-b>', '#0Scroll a page down', function() {
    Normal.scroll("pageUp");
});

// 向下滚动一段距离
mapkey('<Ctrl-j>', '#0scroll a distance down', function() {
    window.scrollTo({
        top:document.documentElement.scrollTop + 400
    });
});

// 向上滚动一段距离
mapkey('<Ctrl-k>', '#0scroll a distance up', function() {
    window.scrollTo({
        top:document.documentElement.scrollTop - 400
    });
});
//禁用平滑滚动
settings.smoothScroll = false;

mapkey('s', '#0stop load page', function(){
    window.stop();
});

参考文献

[1] 参考“在网页按下‘?’字符打开的默认快捷键表”
[2] https://github.com/brookhong/surfingkeys
[3] https://github.com/brookhong/surfingkeys/wiki

总结

总体来看,这个插件优于此前在chrome平台上遇到的其他同类插件(诸如:cvim,vimium).其功能配置确实很强大.不过在使用上,仍然存在一些问题.
调用omnibar打开url,如果输入的url未在浏览器访问过,omnibar会调用google搜索引擎进行搜索.据说这个bug会在0.9.9版本进行修复.原文此外surfingkeys修改了大量的默认按键,也可能是以前使用pentadactyl的原因,感觉很多热键都需要重新映射.