Hammerspoon 是一款面向 macOS 的自动化工具:你可以用 Lua 脚本把“窗口摆放、切换 App、快速输入、批量操作”等动作组合成快捷键或菜单项。它更像一套可编程的效率积木,适合愿意花 30 分钟做一次配置、之后长期受益的人。
工具地址:https://www.hammerspoon.org/(参考:https://github.com/Hammerspoon/hammerspoon)
方式 A:官网下载 DMG,拖拽到 Applications 后启动。
方式 B:Homebrew 安装(已安装 brew 的情况下):
brew install --cask hammerspoon
首次启动后,菜单栏会出现一个小锤子图标。建议在 macOS 的“系统设置 - 隐私与安全性”里按提示授予必要权限(例如辅助功能/自动化),否则部分窗口控制能力可能不可用。
Hammerspoon 默认读取配置目录:~/.hammerspoon/。你只需要创建一个入口文件:
mkdir -p ~/.hammerspoon
touch ~/.hammerspoon/init.lua
然后在菜单栏图标里选择“Open Config”,编辑 init.lua,保存后点击“Reload Config”(或给它绑定一个快捷键)。
把下面代码复制到 init.lua(注意:代码片段都用 <code> 包裹,便于发布页识别):
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "R", function() hs.reload() hs.alert.show("Hammerspoon reloaded") end)
这样你每次改完脚本,按 cmd+alt+ctrl+R 就能立即生效。
最常见的提效就是“窗口摆放自动化”。下面示例把当前窗口移动到屏幕左半/右半:
local mash = {"alt", "cmd"} hs.hotkey.bind(mash, "Left", function() local win = hs.window.focusedWindow() if not win then return end win:moveToUnit(hs.geometry.rect(0, 0, 0.5, 1)) end) hs.hotkey.bind(mash, "Right", function() local win = hs.window.focusedWindow() if not win then return end win:moveToUnit(hs.geometry.rect(0.5, 0, 0.5, 1)) end)
你可以把 mash 里的组合键换成自己顺手的。习惯后,“窗口不乱、注意力不散”的收益非常直观。
如果你经常在浏览器、笔记、终端之间切换,可以给常用 App 绑定热键:
hs.hotkey.bind({"alt"}, "1", function() hs.application.launchOrFocus("Google Chrome") end) hs.hotkey.bind({"alt"}, "2", function() hs.application.launchOrFocus("Visual Studio Code") end) hs.hotkey.bind({"alt"}, "3", function() hs.application.launchOrFocus("Terminal") end)
把应用名改成你的实际应用(可在 macOS “应用程序”里看名称)。
1)快捷键不生效:先确认 Hammerspoon 正在运行;再检查脚本是否报错(菜单栏 - Console)。
2)窗口移动失败:通常是权限问题,去“系统设置 - 隐私与安全性”里给 Hammerspoon 开启“辅助功能”。
3)多显示器布局不一致:建议先把最常用的规则做简单(左右半屏/最大化),稳定后再逐步扩展到网格布局。
官方文档与 API 列表:https://www.hammerspoon.org/docs/
当你把 3-5 个高频操作固化成热键后,就能明显感受到“同样的电脑,用起来更像自己”。