缘起
Quicker 是一个 windows 平台上的捷径工具。和大部分捷径工具一样,用户可以在面板上添加常用的快捷操作,然后点击按钮执行。
介绍这个工具的文章有很多,我也是在少数派吃到的安利,因此功能方面不再赘述。
试用期间,我发现它可以读取光标已选中的文字内容,而我日常工作中有大量「选中 - 复制 - 在某个网站搜索」的操作。于是想到,如果可以用 Quicker 的快捷动作实现「划词搜索」,必能节省大量打开网站的操作时间。
Quicker 共享库里已有很多现成的划词搜索或翻译动作,但我想搜索的内容大多不在此列,所以选择了 DIY。
需求分析
确定目标后,就可以开始设计制作快捷动作了。首先,得搞清自己的实际需求。脑补了一下使用场景:
过去,我的搜索步骤是「划词 - Ctrl+C
- 打开新标签页 - 点开网站书签 - 点击搜索框 - Ctrl-V
- 回车」。
Ugh!搜索岂是如此不便之物!我想要的感觉明明是——
「划词 - 鼠标中键 - 点击按钮」!
继续分析下去,这个动作的流程是:
- 获取选中内容
- 对选中内容进行字符串操作,和网站的搜索路径(如
https://www.google.com/search?q=
)拼合成有效的 URL - 打开该 URL
不过,还有一种可能性,就是我突然想查找某个关键词,但面前无词可划。所以这个动作应该提供一个输入机制。因此调整第一步为:
- 获取选中内容,如果选中内容为空,那么弹窗提示输入关键词
差不多就这样了,接下来是实际制作的部分。
动作编辑
第一步,是在任意空格上单击右键,并选择「新建组合动作」:
可以看到如下界面:
从左边的工具箱里拖动模块进步骤列表就可以制作动作了。
右边的变量窗口里已经有了两个默认变量,一个是 context
,默认的文本变量,另一个是 img
,默认的图片变量。
我们先创建两个新变量:
- input,文本类型,用于保存关键字
- selected,布尔类型,用于判断获取文本是否成功
然后拖进模块「获取选中的文字」:
注意这一模块有两个输出,或者说返回值,其一是「内容」,即被选中的文字;其二是「是否成功」。我们把结果分别输出到刚才的两个变量里。
接下来,判断是否成功读取了选中文本。拖入「如果…否则…结束」模块,并在「否则」后面添加用户输入模块:
这一步结束后,input
变量内应该有我们所需的关键词了。如果用户什么都不输入,暂时不做处理。
下一步,是要把关键词附加到搜索路径后面。这里有个难点:如果用户输入的是一个短语,中间有空格,直接附加会得到错误的结果。所以,必须把关键词拆成一个列表,循环附加在搜索路径后,并在其间添加相应的连接符,如 +
,&20
等,因网站而异。
我们再创建两个变量:
- list,列表类型,用于存储拆分后的关键词
- path,文本类型,用于存储搜索路径
拖入模块「拆分文本为列表」,并对 path
赋值:
为了做循环处理,得再创建一个变量:
- temp,文本类型,用于临时存储每个循环从列表里读取到的单个词语
然后,拖入循环模块「每个」:
这样,列表中的每个词都会被依次读进 temp
中。
在循环里加入模块「组合成文本」:
上图中,「格式化字符串」的作用是把下面提供的最多五个参数按一定格式衔接起来。每次循环时,我们依次衔接:
- 已经拼好的路径 path
- 当前词 temp
- 分隔符(此处是 +)
然后输出回 path
,也就是把新拼好的路径提供给下一个循环。
最后,拖入「打开网址」:
动作就完成了。
扩展
以上这个结合「划词搜索」和「输入搜索」的快捷动作,亲测十分好用,并可以扩展到大部分我常用的搜索内容上,如:
- Wiktionary,维基词典,同时搜索多个语种的词语及其词源
- Behind the Name,用于查询名字背后的故事
- ZLibrary,免费电子书库
- Jisho,(我认为)最好的网络英日辞典
所以我保存了一份模板,每次需要做一个新的搜索按钮时,就复制粘贴到新的格子上,更改名称、地址、分隔符、提示语、图标等即可。
已公开动作:Wiktionary | Jisho
至于搜索模板本身,因未通过审核,暂不能分享。但制作思路已备详于此,自制或修改一个,应非难事。