编写AppleScript实现iTerm2自定义清行快捷键遇语法错误如何解决
问题根源
keystroke 是 System Events 专属的系统级控制方法,不属于iTerm2的原生AppleScript命令集。你直接向iTerm2发送keystroke指令,iTerm2识别不到对应方法,自然会抛出语法错误。
你遇到的两类报错的具体原因:
- 带引号写
"iTerm2"时,AppleScript成功定位到iTerm2应用,但在其命令集里找不到keystroke对应的标识符,因此提示标识符不存在 - 去掉引号时,AppleScript会把
iTerm2识别为自定义变量而非目标应用,变量未定义的情况下也会触发标识符错误
正确实现代码
要实现仅将ctrl+L发送给iTerm2,只需要先激活iTerm2,再调用System Events发送按键即可,代码如下:
-- 先判断iTerm2是否在运行,避免误唤醒应用 if application "iTerm2" is running then tell application "iTerm2" to activate tell application "System Events" to keystroke "l" using control down end if
快捷键绑定步骤
要实现仅在iTerm2中cmd+L触发该功能,不需要额外第三方工具:
- 打开「自动操作(Automator)」,新建类型为「快速操作」的项目
- 左侧操作库搜索「运行AppleScript」,将该动作拖到右侧编辑区,替换默认代码为上面的正确代码
- 项目顶部配置项:「工作流收到」选择「没有输入」,「位于」下拉选择「iTerm2」(如果列表无对应选项,手动选「其他」定位iTerm2的应用程序包即可)
- 保存项目,命名为你能识别的名称比如「iTerm2清行」
- 打开「系统设置→键盘→快捷键→服务」,在「通用」分类下找到刚创建的快速操作,绑定
cmd+L快捷键即可
该配置完成后,快捷键仅在iTerm2激活状态下生效,不会干扰其他应用的cmd+L默认功能。
内容的提问来源于stack exchange,提问作者Nick_Z0
相关产品推荐
相关产品推荐

