查看原文
其他

效率工具 | 神器AutoHotkey使用教程

Jackpop 平凡而诗意 2022-06-20

点击蓝字关注我

AutoHotkey是一款强大、开源的热键脚本工具。在以往的文章里,我介绍了很多强大的效率提升工具,其中包括Wox、Listary、QuickLook等。如果说这些软件在某些领域独树一帜,那么AutoHotkey则是在则是“无所不能”的强大工具,网上提及AutoHotkey的文章有很多,但是没有深入的介绍,本文就来详细讲解一下这款工具的使用。

—▼—

简单示例

易用性和功能的灵活性往往是成反比的,举一个极端的例子,开发语言这类工具在使用方面非常不友好,但是经过开发语言的各种组合可以实现各种手机、PC端软件数不胜数的功能。当然,由于它的使用偏于专业,所以更多人选择定制化较强、界面友好的工具,但是却要牺牲一些灵活性。

Autohotkey是一款介于纯编程语言和分发软件之间的一款工具,你可以使用它写一些简单的脚本语言,用内置的一些函数或者自定义的函数去单独或组合使用,以达到我们期望的功能,下面先来看一个示例。

先看一个简单的AutoHotkey脚本,

^j::
Send, This is a Hotkey!
return

::hs::This is a HotString!

^#s::
Run, D:\Sublime Text 3\sublime_text.exe

然后鼠标右键点击编译,或者双击脚本运行,然后点击对应的快捷键,

这个演示包括三个动作:

  1. 快捷键启动sublime

  2. 快捷键输入“This is a Hotkey!”

  3. 快捷字符输入“This is a HotString!”

回到前面给出的AutoHotkey脚本,来一步一步的解释怎么实现的。

第一个动作:快捷键启动sublime

^#s::
Run, D:\Sublime Text 3\sublime_text.exe

这句命令实现的是快捷键启动sublime

第一行中^#是两个代表按键的符号,分别代表ctrlwindowss就是键盘上的s键,::可以认为是命令的结束符号。

第二行中Run是一个内置函数,用于运行一个工具或者打开一个网页,后面跟的是要打开的网页或者软件路径(如果已经加入到环境变量,就不需要完整的安装路径)。

因此,上述两行脚本的功能就是ctrl+win+s就可以打开sublime这款软件。

第二个动作:快捷键输入“This is a Hotkey!”

^j::
Send, This is a Hotkey!
return

看完第一个动作的介绍,应该很容易理解这个动作,

第一行的含义是ctrl+j快捷键。

第二行的含义是发送一段字符串

第三个动作:快捷字符输入“This is a HotString!”

::hs::This is a HotString!

这个和前两个动作不同,介绍这个动作之前需要先简单的了解一下AutoHotkey,它主要包括两个概念:

  • hotkey

  • hotstring

其中hotkey并不陌生,就是热键、快捷键,前两个动作实现的就是快捷键。

这里需要说一下hotstring,顾名思义,就是通过一段字符串实现一个快捷功能,第三个动作实现的就是一个hotstring功能。

现在回过头来解释一下第三个动作的脚本的含义,

两个::之间定义的是快键字符串,后面跟随的是要输入的完整字符串,这样的话在文本框输入hs然后点击Tab键即可在编辑器中输入This is a HotString!这个完整的字符串。

很多人用惯了快捷键会疑问,hostring有什么价值?我认为它对于开发者或者文本编辑相关的工作者是非常有意义的。我们可以在脚本中预先用一些hostring定义好我们常用的代码块或者文字内容,这样,当输入对应的hostring时就可以快速补全我们想要的内容,速度和资源消耗要远远小于常用的代码补全工具。

热键符号

通过前面的简单示例,想必应该对AutoHotkey有了简单的了解,它就是通过一些内置的符号函数自定义函数来任意组合,定制化的实现我们想要的功能。

通过示例中第一个动作^#s代表快捷键ctrl+win+s可以看出,热键符号具有至关重要的作用,我们怎么就知道^代表ctrl#代表win呢?因为官网给出了不同符号的对应关系,下面是各个符号对应的热键,

符号描述
#win
Alt
^Ctrl
+Shift
&可以在两个组合键之间使用
<指定快捷键的位置在左边
>指定快捷键的位置在右边

注:我们都知道,alt、ctrl、shift这些键都有两个,左右两边均有,<和>两个符号就指定使用左边的符号还是右边的符号,例如,<!指定使用左边的Alt键。

标签

在示例中,我们也看到使用了RunSend,这两个称为AutoHotkey的标签,虽然我是以大写字母开头,但是标签名称其实是不区分大小写的,可以由空格、制表符、逗号、转义符以外的任何字符组成,但是由于样式的约定,通常最好使用字母、数字、下划线,AutoHotkey常用的内置标签有如下几个,

标签描述
Send向编辑器发送一段字符
SendInput同上
MsgBox弹出对话框
Run运行一个工具或打开网页
WinActivate窗口激活
WinWaitActive窗口等待激活

下面看一个例子,

^j::
Run, https://www.baidu.com
MsgBox, 已经打开网页!
return

有了前面的基础,应该很容易理解这个脚本,它是一个组合功能,分别是打开网页和弹出对话框,下面看看效果,

函数

想要更加灵活,仅仅使用上述这些符号、标签显然是不够的。和大多数编程语言一样,AutoHotkey也支持自定义函数,这才是它的强大之处。
AutoHotkey内置了一些常用的函数,如下,
函数描述
FileExist检查文件或文件夹是否存在,并返回其属性
GetKeyState获取按键状态,向下返回true,向上返回false
InStr从左或右搜索字符串的给定出现项
RegExMatch确定字符串是否包含正则表达式匹配模式
RegExReplace替换字符串中出现的模式(正则表达式)
StrLen获取字符串长度
StrReplace替换字符串
StrSplit用指定的分隔符分割字符串
SubStr按指定位置返回子字符串

当然,AutoHotkey内置的函数远不止这些,它还包括以下类型的函数:

  • 文件读取

  • 数学计算

  • 条件判断

  • 异常处理

  • 状态获取

  • 鼠标键盘

  • 屏幕状态

  • 声音

  • 进程管理

  • 窗口状态

  • ……

没错,AutoHotkey在功能和丰富性方面丝毫不亚于一些老的脚本语言,但是它的优点是更加实用。我们可以即写即用,能够辅助我们日常生活中多种场景的工作。

使用场景

快捷启动
这方面它可以替代Wox、Listary这些快速启动工具,我们可以把常用的网站、软件用脚本的方式定义不同的hotkey或者hotstring,当我们需要打开一个网页或者软件时就不需要再繁琐、多步骤的去寻找、打开。
例如用下面这个脚本,能够快速打开优酷、B站、直播吧,

^y::
Run, https://www.youku.com/
return

^b::
Run, https://www.bilibili.com/
return

^z::
Run, https://www.zhibo8.cc/
return

自动补全

我们在日常开发或者文本编辑时,会有大量重复的工作,以编程为例,我们会有很多重复的代码块,因此,才有各种各样的补全工具,但是目前大多数补全工具可以说是差强人意,速度方面甚至不及自己手动敲代码的速度,但是通过AutoHotkey把我们常用的代码块、文本用hotkey、hotstring代替,这样能够快速的补全我们想要的内容,

例如,用下面几行脚本补全我们常用的代码片段,

::np::import numpy as np
::plt::from matplotlib import pyplt as plt
::tf::import tensorflow as tf

安装与基本操作

下载安装包

AutoHotkey是一款开源免费的工具,能够直接从官网下载AutoHotkey的安装包,

https://www.autohotkey.com/

如果觉得麻烦,也可以在公众号后台回复关键字"hot"获取安装包。

安装

双击下载的安装包,会弹出安装界面,直接一步步往下点击即可,如果需要更改安装路径,可以在location页面进行更改。

新建脚本

成功安装后,在桌面或者其他空白处点击鼠标右键-新建-AutoHotkey Script,来创建一个AutoHotkey脚本。

编辑脚本

创建脚本后,鼠标右键点击脚本,可以看到有三个选项:Run ScriptCompile ScriptEdit Script

可以先点击Edit Script,它会用记事本打开,当然也可以用sublime、UE、notepad++等文本编辑器打开,然后进行编辑。

编辑之后可以双击脚本直接运行,也可以点击Run Script运行脚本,这样就可以使用我们脚本中定义的快捷键或者快捷字符串。此外,还可以点击Compile Script把脚本编译成exe文件,这样的话脚本会被加密,可以用于分发,其他使用者就无法看到工具源码。

END


有趣的灵魂在等你

长按扫码可关注 

相关文章【动手学计算机视觉】第十三讲:批量归一化【动手学计算机视觉】第十四讲:正则化之Dropout【进阶Python】第三讲:类的特殊方法(上篇)【进阶Python】第四讲:类的特殊方法(下篇)
文章好看就点这里

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存