我正在寻找一个解决方案,以自动转换富文本复制到剪贴板(粘贴板),以纯文本的Hammerspoon (lua代码)。
我知道如何在lua中访问粘贴板,但不知道如何将此操作绑定到复制或粘贴事件以使其自动化(也不知道如何将内容转换为纯文本)。
local pasteboard = require("hs.pasteboard")发布于 2019-04-09 13:29:42
最简单的方法是使用答案描述的here来获取粘贴板中的RTF数据,并通过管道将数据传递给已经可用的textutil命令,以将其转换为标准输出的纯文本:
osascript -e 'the clipboard as «class RTF »' | \
perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' | \
textutil -stdin -stdout -convert txt然后我们可以在Hammerspoon环境中使用hs.execute来运行外壳命令并返回转换后的值,所以在您的Lua代码中就像这样简单:
local text = hs.execute([[
osascript -e 'the clipboard as «class RTF »' | \
perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' | \
textutil -stdin -stdout -convert txt
]])仅供参考Hammerspoon API确实允许您使用"public.rtf" UTI使用hs.pasteboard.readDataForUTI从粘贴板中检索RTF数据,因此从技术上讲,您可以在Lua中完成所有这些操作,但您必须手动转换RTF数据。
https://stackoverflow.com/questions/54617188
复制相似问题