6

我刚开始使用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"

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

4

2 回答 2

7

我遇到了同样的问题。我尝试了您在上面尝试的方法,尽管它在许多应用程序中都有效,但在 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)
--

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

于 2018-05-01T18:37:33.680 回答
1

我也遇到了这个问题,并通过在加载和粘贴多行字符串之前将系统粘贴板的内容保存到临时粘贴板中来改进 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)
于 2021-07-06T17:11:20.740 回答