在 Mac OSX 中创建用于粘贴特定文本短语的热键或键盘快捷键

在 Mac OSX 中创建用于粘贴特定文本短语的热键或键盘快捷键

我有一个文本短语(实际上是几个阶段),我在多个应用程序中经常使用。我想创建一个键盘快捷键或热键,将该文本短语粘贴到我将光标放在文本输入字段中的任何位置(Apple Mail、Microsoft Word、TextEdit、TextWrangler、浏览器窗口等),而不是不断地从便签中复制和粘贴。

我宁愿不购买任何应用程序(似乎 Keyboard Maestro 有此功能,但为此花费 36 美元似乎很愚蠢),尽管免费应用程序也可以。尝试在“系统偏好设置”>“键盘”>“键盘快捷键”下查找,但没有明显的解决方案,而且我找到的所有 AppleScript 似乎都无法正确翻译。我在这个论坛上为 Windows 用户找到了针对此问题的其他解决方案(例如 AutoHotKey),但没有为 Mac 用户找到解决方案。

答案1

使用 AppleScript 输入文本的最简单方法是运行:

tell application "System Events" to keystroke "foo bar"

您可以通过创建新的键盘快捷键来触发此功能快速行动(以前称为服务) 中的 Automator。将其设置为接收无输入,然后拖动运行 AppleScript从左侧窗格到右侧窗格。

它看起来应该是这样的:

保存它,然后在下为此服务分配一个键盘快捷键系统偏好设置 » 键盘 » 键盘快捷键

答案2

在 2022 年,无需任何脚本或第三方产品即可轻松实现此目的,方法是使用快捷方式应用程序。

  1. 在快捷方式应用程序中,单击+以创建新的快捷方式。
  2. 双击或将Text动作从动作库面板拖到编辑器中。
  3. 在文本字段中输入文本短语。
  4. 双击或将Stop and Output操作拖到编辑器中。
  5. 在快捷方式详细信息面板中,勾选该Use as Quick Action选项。
  6. 单击Add Keyboard Shortcut按钮,然后输入所需的组合键。
  7. 为您的快捷方式命名(在窗口顶部)并关闭窗口。

现在,您的新快捷方式应该可以通过多种方式使用。在文本文档或文本字段中:

  1. 右键单击并从上下文菜单中选择它。
  2. 从应用程序的服务菜单中选择它。
  3. 按下您设置的组合键。(系统可能需要几分钟来注册,所以请耐心等待。如果仍然不起作用,请确保组合键不与系统自己的快捷键之一冲突。)

答案3

keystroke命令只能用于插入当前键盘布局中找到的字符,并且对于长字符串文本,会出现明显的延迟。您也可以直接插入文本:

这种方法实际上也不太好用。10.7 和 10.8 上有一个错误,Automator 服务的快捷方式并不总是有效,除非您将鼠标悬停在服务菜单上。

我用过快速脚本将此脚本分配给 F3:

try
    set old to the clipboard as record
end try
try
    tell application "System Events"
        key code 123 using {option down, shift down}
        keystroke "c" using command down
    end tell
    delay 0.05
    set input to the clipboard
    read POSIX file "/Users/lauri/Notes/snippets.txt" as «class utf8» using delimiter linefeed
    repeat with p in result
        considering case
            if p starts with (input & " ") then
                set the clipboard to text ((offset of space in p) + 1) thru -1 of p
                tell application "System Events" to keystroke "v" using command down
                delay 0.05
                exit repeat
            end if
        end considering
    end repeat
end try
try
    set the clipboard to old
end try

snippets.txt 如下所示:

m [email protected]
cmd ⌘

另一个选择是使用DefaultKeyBinding.dict。这将使 ⌥M 或 ⌥X 和 m 插入电子邮件地址:

{
    "~m" = (insertText:, "[email protected]");
    "~x" = {
        "m" = ("insertText:", "[email protected]");
    };
}

您还可以向按住按键时显示的弹出窗口添加自定义文本。请参阅这个问题

答案4

Alfred 应用程序让您使用 Workflow 和 Snippets 功能完成此操作以及许多其他操作。我一直使用 Alfred 并强烈推荐它。要解锁 Workflows,您必须支付 Powerpack 许可证,但您不会后悔的。

相关内容