文明通过增加我们不假思索就能完成的的重要操作的数目而取得进步。
——阿尔弗雷德 · 诺斯 · 怀特海
和上面那句话相对应的,我们应该尽量减少重复的没有价值的操作,或是降低这种操作的成本。为了这个念头,我们使用makefile来编译程序,学习各种编程语言来减少重复劳动,在开发软件时加入快捷键支持。根据二八原则,我们在避免重复劳动上投入20%的精力可以为我们带来80%的效率提升。我们应该把这20%的时间和精力用来学习AutoHotkey。
AutoHotkey是一款免费的、Windows平台下开放源代码的热键脚本语言。从名字可以看出来,它可以用来设置热键。但是因为它是一门脚本语言,所以就不止设置快捷键那么简单了。帮助文档这样介绍它的功能:
- 通过发送键盘键击和鼠标点击自动化几乎所有的操作。您可以手工编写宏或者使用宏录制器。
- 为键盘,游戏杆和鼠标创建热键。几乎任何按键、按钮或组合键都可以设置为热键。
- 在您键入缩写时扩展缩写。例如,键入 “btw” 能自动地生成 “by the way”。
- 创建自定义的数据输入表格、用户界面和菜单栏。详见图形用户界面。
- 重新映射您键盘、游戏杆和鼠标上的按键和按钮。
- 通过WinLIRC客户端脚本对手执遥控器的信号作出反应。
- 运行现有的 AutoIt v2 脚本,并用新功能增强它们。
- 将任何的脚本转换为EXE文件,使其在没有安装 AutoHotkey 的计算机上也能运行。
很早就把它下载下来,却一直没有用。直到上次要用一个简易键盘来控制电脑的时候,才去学习了一下。这时才发现它真是太强大了。这个简单的教程会帮助你从实践出发快速的熟悉这门语言。建议你按照下面的学习步骤学习,不要遗漏每一项。
最简流程示例
- 到www.autohotkey.com下载或点击这里下载(AutoHotkey1.1),然后安装。
- 使用编辑器或记事本新建一个脚本文件,格式为.ahk,编码格式为UTF-8。
- 编辑脚本,在脚本中写入下面这行:
#h::Run www.greyli.com
- 保存后双击运行。
- 这时按下Windows键和h键就会打开我的博客。
在上面这个命令中,符号#表示Windows键,#后紧跟着h表示组合键。符号::用来分隔热键和命令(左边是热键,右边是命令)。Run命令用来打开一个文件或网页,中间空一个空格。
基本术语
- 脚本/宏(Script):你要编辑的一个格式后缀为.ahk的纯文本文件(编码格式为UTF-8)。你把代码写进这个脚本里,双击执行后,你的热键就生效了。
- 热键(hotkey):用来触发操作的按键或组合键,也就是快捷键。
- 命令:你为某个热键指定的一个动作(action),比如打开程序,打开网页等。
- 热字串(hotstring):类似于热键,当你输入热字串并按下回车或空格后触发相应的命令。用过老型号的黑莓的人对热键和热字串一定不陌生。
- 宏录制器(AutoScriptWriter):可以录制回放你的操作的工具,非常适合新手入门学习。目前AutoHotke_L版本已去除,详情请见这里。
- 多行热键:当通过热键触发多个命令时,这时的格式是命令从第二行开始,每个命令一行,最后以占据一行的return结束。
#h:: RunWait Notepad Msgbox Goodbye! return
- 参数:自定义的数值,传递给命令执行,比如sleep后面的时间数就是参数。参数与命令通过空格或逗号隔开,多个参数使用逗号隔开。
- 注释(comment):注释是用来对你的代码进行解释和说明的文字。单行的注释以;开头,多行注释用/*和*/括住。
;这是单行注释 /* 这里 是 多行注释 */
常用命令
Run | 用来打开一个程序、文档、网页或者快捷方式 |
Send | 发送键击或一段字符 |
Msgbox | 消息窗口 |
Inputbox | 用户输入窗口 |
Sleep | 脚本等待指定的时间,然后执行下面的命令。后面接时间参数(毫秒)。 |
Click | 在指定的位置点击鼠标 |
常用符号
# | Windows |
^ | Control |
! | Alt |
+ | Shift |
& | 用来连接两个按键组成组合键(使用除了上面四个按键外) |
<和> | 分别表示成对按键中左边和右边的的按键 |
Tab和Enter等 | 没有特殊符号。使用Send命令时用大括号括起来以和字符区分开。 |
注:前四个为修饰键,可以和其他按键直接相连(比如写成#a),其他按键要做修饰键时需要用&连接(比如a&b)。
基础应用示例
为常用软件、网站设置快捷键
按下Windows和k打开Notepad++:
#k::Run D:\Program Files (x86)\Notepad++\notepad++.exe
按下Windows和h,或输入hui后按下回车或空格(推荐使用空格)可以打开我的博客:
#h::Run www.greyli.com ;下面使用热字串运行同样的命令,这时要采用多行分隔 ::hui:: Run www.greyli.com return
按下Alt和m打开一组网页和程序:
!m:: Run www.google.com Run http://fm.douban.com Run D:\Program Files (x86)\Notepad++\notepad++.exe return
建议用热字串来启动常用的程序,把快捷键留给常用的操作。为了防止打字时冲突可以在热字串前加特定的符号,比如斜线。使用热字串启动命令要使用多行热键格式。
用热键或热字串保存常用文字
按下Alt和k发送我的签名:
!k:: Send Sincerely,{Enter}Richard Hui. return
写下@g后按下空格或回车,自动转换为我的邮箱
::@g::withlihui@gmail.com
按下Alt键和g后填入我的账户和密码并登录(先把光标点在第一个输入框里)。
!g:: Send withlihui@qq.com {Tab}mimashi123 {Enter} return
(下一篇会有一个一键登录网站的示例)
Tips与建议
- 命令不区分大小写。
- 所有的符号均为英文符号。
- 一个脚本里可以写入多个热键。
- 发送的字符里包含的按键前要有一个空格。
- 不分配热键的命令将从上往下依次执行。
- 修改后的脚本要重新运行(双击执行脚本文件)才能生效。
- 开机运行脚本:把脚本的快捷方式放到启动文件夹(开始菜单—所有程序—启动)
- 中文支持,安装Autohotkey_L(1.1)版本。
- 编辑器推荐:SciTE4AutoHotkey
更有趣和复杂的的进阶应用请见下一篇。
继续前进
你可以从这些地方继续学习:
- 必备:帮助文档(中文文档下载/在线文档/在线中文)
- 新手教程包:AHK懒人包
- 官方论坛及中文子论坛
- 中文论坛:ahk8.com
- 知乎专栏:AutoHotkey之美
- AutoHotkey 学习指南
good