OmniOutliner和OmniFocus快捷键添加超链接

Omni Group旗下的OmniOutliner和OmniFocus目前用得挺顺手,但是有一点不爽的是没法选中文字添加超链接(OmniFocus的菜单栏中有这个选项,但实际上没有效果)。以往添加超链接是复制URL到app中,然后右键URL选择编辑。但是OmniFocus的Note里编辑超链接又有奇怪的Bug,改动后有时又会恢复原样。

更新:OmniFocus for Mac 3.0.1中添加超链接的功能已经能够正常使用。
再次更新:OmniOutliner for Mac 5.5中添加超链接的功能已经能够正常使用。

折腾后解决了这个问题,实现在OmniOutliner和OmniFocus中按⌘+K弹出对话框,在对话框中输入URL后添加超链接的功能。

主要参考Keyboard Maestro论坛里的这个脚本。不过该脚本遇到中文内容会乱码,于是替换了其中的AppleScript内容。

其实在原先脚本的HTML<meta>标签中注明UTF-8编码就能解决乱码问题。不过等发现是这个问题时已经重写了AppleScript,还是把AppleScript放上来吧。

在执行该AppleScript之前,Keyboard Maestro中已经将选中的文本存入变量title里,将URL链接存入变量url里。

1
2
3
4
5
6
7
tell application "Keyboard Maestro Engine"
set strURL to value of variable "url"
set strTitle to value of variable "title"
end tell
set the clipboard to "<meta charset=\"utf-8\"><a href=\"" & strURL & "\">" & strTitle & "</a>"
set theHEX to do shell script "LC_ALL=en_US.UTF-8 pbpaste | hexdump -ve '1/1 \"%.2x\"'"
run script "set the clipboard to «data HTML" & theHEX & "»"

修改ApplesSript后Keyboard Maestro脚本在OmniOutliner中运行正常,不过OmniFocus中默认会对生成的内容采用Songti SC字体,有点看不习惯。所以AppleScript中加入字体信息。

1
2
3
4
5
6
7
tell application "Keyboard Maestro Engine"
set strURL to value of variable "url"
set strTitle to value of variable "title"
end tell
set the clipboard to "<meta charset=\"utf-8\"><font face=\"Open Sans\"><a href=\"" & strURL & "\">" & strTitle & "</a></font>"
set theHEX to do shell script "LC_ALL=en_US.UTF-8 pbpaste | hexdump -ve '1/1 \"%.2x\"'"
run script "set the clipboard to «data HTML" & theHEX & "»"

我这边是使用了Open Sans字体,macOS中没有自带,将其换成想要的字体就好。

另外提一下,OmniFous的Note的超链接配合这个AppleScript可以实现快捷键跳转,结合URL schemes可以跳转到特定app的特定页面,比如OmniFous的Project、Context、Task以及Evernote的笔记页面等。

附上Keyboard Maestro的Macro下载地址OmniOutlinerOmniFocus