我想要速度。我需要速度。
所有这些点击、所有这些搜索、所有重复性的思考和精神开销都阻碍了实际完成工作。
我需要机器人为我做这项工作。
在 Windows 上使用 AutoHotkey 多年后,我最近搬到了 macOS。
作为一个相对的 Mac 菜鸟,我开始与Alfred 、 Karabiner一起玩,并很快以 Hammerspoon 的形式找到了慰藉。
啊,锤子勺。是的,我已经使用了超级聪明的人编码和扩展 Hammerspoon 的代码和模块——“Spoons”,这让我获得了一些很大的收获,但我需要更多。
然后,有Lua。我想提高 Lua 的技能。
最好的方法是什么?编码一些东西。
进入Hellfred ,一个基于 3 个迷你应用程序的集合
这是一种将重复、耗时的任务映射到键序列、命令或可搜索文本的方法。
所以你想要速射?跳到下面的安装和教程部分或checkout
basics
分支。
git checkout basics
一个快速启动、基于模式的热键到动作映射实用程序。
请问英文好吗?
当我键入一个字符或一系列字符时,然后执行特定功能,但前提是我处于特定模式。
好的。也许是一个例子?
launchGoogleChromeApp
(但仅当我处于默认模式时)changeToWindowManagerMode
(同样,在默认模式下)centerWindowOnScreen
(在 WindowManager 模式下)
具有选择到动作映射的模糊搜索选择器实用程序。
请问英文好吗?
当我搜索选项列表并选择一个时,然后执行特定功能。如果我的选择有子选择(想想: parent => children
),然后显示这些,以便我可以搜索它们。
好的。也许是一个例子?
假设你有这样的结构:
openGoogleInBrowser
。launchOrOpenApp
。
具有基本字符串匹配支持的类似命令行的实用程序。
请问英文好吗?
当我输入命令并提交它时,然后检查我的命令是否有任何匹配的字符串模式并执行与该命令相关的函数。
好的。也许是一个例子?
当我输入命令' open notes '然后按enter
,然后执行任何带有filter
的功能(例如命令必须以单词' open '开头)和适合打开Notes的行为(例如打开与' notes '相关的应用程序)应用程序。
当我键入“ browse github ”然后按enter
键时,然后执行任何带有过滤器的函数(例如,命令以“ browse ”开头)和适合打开链接的行为(打开与“ github ”相关的 url)。
~/.hammerspoon
` 目录:
git clone https://github.com/braddevelop/hellfred.git ~/.hammerspoon
有一个带有预配置设置的 Hellfred引导文件。让我们在 Hammerspoon 的init.lua
文件中引用它。
https://gist.github.com/braddevelop/bac92b6797c087ca42f9363aab4972e0
保存文件并重新加载配置(或节省一些时间并使用
3 个 Hellfred 应用程序开箱即用,并且预配置了快速启动示例。让我们对其进行测试,以确保一切正常并启动。
shift
+ ⌘
+ h
打开Hellfirec
shift
+ ⌥
+ h
打开Hellfuzzenter
,Hellfred 的 wiki 将在浏览器中打开shift
+ ^
+ h
打开Hellpromptenter
,Hellfred 的代码仓库将在浏览器中打开
Hellfire 、 Hellfuzz和Hellprompt实现的是将触发器或输入映射到动作或行为, if-this-then-that
,虽然我们刚刚演示了使用每个应用程序来实现相同的结果,但您会发现每个应用程序更适合某些用例比其他用例。
现在让我们调高温度并配置一些更有用的东西。我们将对每个应用程序进行编程以解决以下场景,以便您掌握事情的窍门:
您可以在存储库基础分支的hellfred/extend/basics目录中找到本演练的最终文件。
每个应用程序都遵循一组类似的步骤。
Subscriber
对象(这可以在hellfred-bootstrap.lua中完成,但我们将创建单独的文件以保持干净。我们将利用工厂方法使对象创建变得轻而易举)
地狱火的工作原理是这样的:
初始化应用程序
这已经通过hellfred-bootstrap.lua
中的预配置完成。随意将热键更改为其他内容。
https://gist.github.com/braddevelop/49c7e7c7c62350d93e7798ff2bf40541
配置Subscriber
对象
triggers
和callbacks
是用户定义的,并包装在简单的配置对象中。这些对象在注册到相应的应用程序时充当subscribers
,并在应用程序内部发生重要事件时通知。
Hellfire 的订阅者对象遵循以下结构:
https://gist.github.com/braddevelop/20c9c5b97a85a9a5c4cb924b511e494a
注意:如果fireIfModeIs
,Hellfire 将默认设置ANY
模式,这意味着回调将在触发时以任何模式触发。
如果不存在,则创建以下目录结构: hellfred/extend/basics
。
然后在名为hellfirepack-applications.lua
的basics
目录中创建一个新的 Lua 文件——文件命名约定并不重要。
添加此代码:
https://gist.github.com/braddevelop/c12d37d64ce75b83a195666317a10aa2
使用应用程序注册订阅者
回到hellfred-bootstrap.lua
,我们需要注册我们刚刚配置的订阅者包。
https://gist.github.com/braddevelop/2298469b805978062421f5a09d01d11a
运行应用程序
输入 Hellfire ( shift
+ ⌘
+ h
) 并键入任何新触发器:
f
打开 Finder 应用程序, t
打开终端或n
打开 Notes 应用程序。
配置Subscriber
对象
好的,现在让我们为我们的 Common Links url 启动器配置订阅者。在hellfred/extend/basics
中创建一个名为hellfirepack-common-links.lua
的新 Lua 文件
添加此代码:
https://gist.github.com/braddevelop/7d637464f45d2d9a4641e365ad2f20a1
使用应用程序注册订阅者
回到hellfred-bootstrap.lua
,我们需要注册我们刚刚配置的订阅者包。
https://gist.github.com/braddevelop/f0dafb518797620747044afbc20da060
运行应用程序
输入 Hellfire ( shift
+ ⌘
+ h
) 并输入任何新触发器: t
、 g
、 h
或s
。
不挂断!您是否注意到输入触发器会启动终端并打开 TechCrunch t
?这可能不是我们想要发生的。让我们利用地狱火的模式功能。
模式提供了一种方法,可以让相同的触发器在不同的上下文中表现不同。
默认情况下,Hellfire 以一种名为……你猜对了……“默认”模式进行初始化。
我们可以配置一些自定义模式以与 Hellfire 一起使用,以便触发器在不同模式下的行为有所不同——或者如果您愿意,可以使用“命名空间”。
考虑这个流程:
在hellfred/extend/basics
中创建一个名为 hellfire hellfire-modes-extended.lua
的新 Lua 文件。
我们将为通用链接触发器创建一个单独的模式来触发。
添加此代码:
https://gist.github.com/braddevelop/1e3f345076a8cd5c4cdf843cad785c9e
我们将在hellfred-bootstrap.lua
中需要这个文件,所以它是
在hellfred-bootstrap.lua
中添加以下代码(在元数据部分下,朝向文件顶部)
https://gist.github.com/braddevelop/04a4ec21aab06f50760d1082b216426f
现在我们需要一种方法将模式更改为新的公共链接模式。
我们将使用c
后跟l
的键序列。
我们还需要能够回到默认模式
我们将使用分号;
作为触发器。
那就是接下来……
配置触发模式更改的Subscriber
对象
在hellfred/extend/basics
中创建一个名为 hellfire hellfire-mode-triggers.lua
的新 Lua 文件
添加此代码:
https://gist.github.com/braddevelop/283acacb9634590208c3b29b6039dc12
使用应用程序注册订阅者
在hellfred-bootstrap.lua
中,为新模式触发器注册订阅者:
https://gist.github.com/braddevelop/8afc4a576d550415f22c3c6fbf4152f1
测试模式之间的切换
现在输入 Hellfire ( shift
+ ⌘
+ h
) 并在两种模式之间切换。模式 FTW!
更新订阅者以在模式下工作
现在我们需要在hellfirepack-common-links.lua
中更新我们的订阅者,以便它们仅在Common Links 模式处于活动状态时触发。
我们将更新工厂方法并将_G.HELLFIRE_MODES_EXTENDED.COMMON_LINKS
分配给fireIfModeIs
而不是nil
。
更新后的方法应如下所示:
https://gist.github.com/braddevelop/152a16f87efe55f08e7ed7139225f757
我们还需要在hellfirepack-applications.lua
中更新我们的订阅者,以便它们仅在Hellfire 的默认模式处于活动状态时触发。
更新后的方法应如下所示:
https://gist.github.com/braddevelop/8ed8dea04397b0471299c8c89f8a9ae0
运行应用程序
输入 Hellfire ( shift
+ ⌘
+ h
) 并在模式之间切换。触发器t
现在的行为会根据地狱火所处的模式而有所不同。地狱是的!
这是 Hellprompt 的功能:
初始化应用程序
这已经通过hellfred-bootstrap.lua
中的预配置完成。随意将热键更改为其他内容。
https://gist.github.com/braddevelop/11e9b4871182f90c57313ab6ffa939a4
配置Subscriber
对象
Hellprompt 的订阅者采用与 Hellfire 不同的结构。
考虑这个结构:
https://gist.github.com/braddevelop/c247d1d1429234c96f3e8c7d8a0b48df
注意:如果未定义filter
,则将始终执行回调。
在hellfred/extend/basics
中创建一个名为hellpromptpack-commands.lua
的新 Lua 文件
添加此代码:
https://gist.github.com/braddevelop/6b18219f83fcf69826083d5dfce5d06f
使用应用程序注册订阅者
回到hellfred-bootstrap.lua
,我们需要注册我们刚刚配置的订阅者包。
https://gist.github.com/braddevelop/f1b75646b7330fcb1c993a5737fd7d61
运行应用程序
输入 Hellprompt ( shift
+ ^
+ h
) 并测试这些命令。地狱!
尝试:
browse news
和:
open terminal
这就是 Hellfuzz 的工作原理:
初始化应用程序
这已经通过hellfred-bootstrap.lua
中的预配置完成。随意将热键更改为其他内容。
https://gist.github.com/braddevelop/b18f575ec347503628e7457217b6e187
配置Subscriber
对象
Hellfuzz 的订阅者采用与其他应用程序不同的结构。
考虑这个结构:
https://gist.github.com/braddevelop/56e9c22c6f921575637c73d60920d208
注意:如果定义nextChoicesFn
,则忽略callback
。
为了让事情变得更简单,我们将使用一个帮助方法来为 Hellfuzz 配置订阅者
在hellfred/extend/basics
中创建一个名为hellfuzzpack-apps-and-links.lua
的新 Lua 文件
添加此代码:
https://gist.github.com/braddevelop/3564ad1ec286a30eca1abb94cfd6a69a
使用应用程序注册订阅者
在hellfred-bootstrap.lua
中,注册订阅者包。
https://gist.github.com/braddevelop/a90f9d5635377d74b145a892845c8273
运行应用程序
输入 Hellfuzz ( shift
+ ⌥
+ h
) 并输入命令。例如,开始输入单词'Terminal' ,您会看到打开终端的选项被突出显示。按enter
,终端打开。冒着热气!
链接启动器(使用嵌套选择集)
Hellfuzz 的一个方便的功能是嵌套选择集的能力。
考虑这个更新的流程:
让我们在Link Launcher任务上尝试一下,我们将创建以下分层选择结构:
将hellfuzzpack-apps-and-links.lua
中的代码更新为以下内容:
https://gist.github.com/braddevelop/384b0ae9629faca95d5d4cb519cd8e61
现在输入 Hellfuzz ( shift
+ ⌥
+ h
) 并开始搜索“公共链接”。您可以选择“ Common links ”选项, commonLinkNextChoices
中的选项子集将被显示并可进行模糊搜索。选择任何链接选项将打开相应的 url。
通过查看extend
分支,在 repo 上寻找即将到来的 Hellfred 实验和扩展。
git checkout extend
现在去提高地狱\m/