如何在 Hammerspoon 中向 hs.eventtap.keyStrokes 添加换行符?

How do I add a newline to hs.eventtap.keyStrokes in Hammerspoon?

我刚开始使用 Hammerspoon。我正在尝试通过按 Cmd+Shift+l 来输出多行文本。

这是我目前尝试过的方法:

hs.hotkey.bind({"cmd", "shift"}, "l", function()
  hs.eventtap.keyStrokes('from sklearn import metrics')
  hs.eventtap.keyStroke("return")
  hs.eventtap.keyStrokes('from sklearn.cross_validation import train_test_split')
end)

我也试过内联 "\n" 和 "%\n"

如何绑定组合键输出多行文字?或者,如何发送 换行符?

我运行陷入同样的​​问题。我尝试了您在上面尝试过的方法,尽管它在许多应用程序中都有效,但在 Chrome 中仍然无效。我使用粘贴板(剪贴板)作为解决方法。

jira_text = [[a 
long 
multi-line
string]]

-- Hotkey JIRA text
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "J", function ()
  hs.alert.show("Remove this message after debugging!")
  --hs.eventtap.keyStrokes(jira_text)#don't do this!
  hs.pasteboard.writeObjects(jira_text)
  hs.eventtap.keyStroke("cmd", "v")
  end)
--

您可以通过使用自定义命名的粘贴板进一步改进它,这样它就不会覆盖您的剪贴板内容(如果您需要的话)。

我也 运行 解决了这个问题,并通过在加载和粘贴多行字符串之前将系统粘贴板的内容保存到临时粘贴板来改进 Josh Fox 的回答。

MULTILINE_STRING = [[multi
line
string]]

-- Paste Multi-line String
hs.hotkey.bind({'ctrl', 'cmd'}, 'F1', function()
    -- save clipboard data to temp
    tempClipboard = hs.pasteboard.uniquePasteboard()
    hs.pasteboard.writeAllData(tempClipboard, hs.pasteboard.readAllData(nil))
    
    -- load string into clipboard and paste
    hs.pasteboard.writeObjects(MULTILINE_STRING)
    hs.eventtap.keyStroke({'cmd'}, 'v')

    -- recall clipboard data
    hs.pasteboard.writeAllData(nil, hs.pasteboard.readAllData(tempClipboard))
    hs.pasteboard.deletePasteboard(tempClipboard)
end)