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