为什么需要?

众所周知 obsidian 里有个插件叫 QuickAdd,这个插件确实不错,可以在你使用 ob 软件时迅速捕获灵感,但时间久了总觉得有点局限,因为它仅限在 ob 软件里使用,那么如果在软件外呢?

通常这样,你正在做别的事情,可能在看视频,可能在阅读公司材料,突然,灵感来了,我们先打开 ob,再记录,虽然也不错,但还是慢了一点,有些灵感可能稍瞬即逝,能不能再快一点呢?

当然可以,这就是 uTools + obsidian 解决方案,uTools 是一款高效的效率工具,用什么只需要 alt+空格键即可呼出,迅速输入文字,通常能匹配到你的工具,尤其常用的工具都在前面,然后你点击“灵感闪记”按钮即可记录到 obsidian 里。“灵感闪记”是你自己写的小程序段,自己起的名字,这个名字随便起,当然你也可以叫 capture。

实现方法

下面开始讲怎么实现:

obsidian 端

只需要安装 Advanced URI 插件即可。

uTools 端

  1. 先去官方下载 uTools uTools官网 - 新一代效率工具平台
  2. 安装"快捷命令"插件(安装方法:点右侧 uTools 工具的 logo 即弹出插件市场,然后搜索插件名称即可)
  3. 在 uTools 中输入"新建快捷命令"即可打开代码编辑窗口
  4. 代码编辑窗口上方选择 shell 语言
  5. 然后输入下面的代码,然后保存代码即可,别忘了给它起个漂亮的名字,就叫灵感闪记或 capture 吧,哈哈
# 获取当前日期
d=$(date "+%Y-%m-%d %H:%M:%S")

# 从uTools输入框获取值
val="{{subinput:请输入}}"

# 自定义你内容模板(其中val就是你输入的文本)
data="$d

$val

---
"

# 打开obsidian并写入数据(必须安装Advanced URI插件才行)
open "obsidian://advanced-uri?vault=我的笔记&filepath=capture/capture.md&mode=prepend&silent=1&data=${data}"

代码解释请看注释,这里的 ${val} 就是你从 uTools 输入的文本,会传到 Advanced URI 的 data 参数中,最终用 shell 打开即可。这里不用担心 URL 编码问题,uTools 会帮你编码,如果你代码里也编码一次会导致重复编码,而被 ob 报地址错误。

注意:

  1. 我这里是 Mac 电脑使用的是 open 命令打开,Windows 是 start 命令,Linux 需要自己安装,有个叫 xdg-open 的。
  2. 我这里是用的 mode=prepend(头部插入),也有 append(追加),new(新建)等,详情参见:写入 | Obsidian Advanced URI
  3. Windows 可以选择 cmd 或 PowerShell 语言,命令写法上可能不同,当然你也可以使用 Linux 模拟器执行

使用

青铜段位使用

使用很简单,只需要 alt + space 呼出 uTools 工具,然后输入你刚才保存的名字,比如 capture,通常你只要输入 cap 就匹配到了 (如果你经常使用就在下面,选择即可),然后输入你的文字,回车即可,你的文字自动会按照代码里写的格式保存到你指定的文件中,我这里的代码是头部插入到 capture. Md 里,当然你也可以追加或者新建。描述起来看起来有点麻烦,其实主要在讲原理或方法,真正用起来打几个字符就可以了,很快哈,都来不及闪。

黄金段位使用

如果你还嫌慢,那就设为全局快捷键,在个人中心 -> 全局快捷键中,输入你的命令名字,比如"灵感闪记"(这个名字必须全局唯一),然后按下你的快捷键,比如是 alt + q 吧。

设置好后,然后你使用的时候按 alt + q ,输入文字,然后回车保存即可,是不是很快!

结束

最后,我一直想找类似 ob 官方的 silent=1 不打开 ob 软件而写入内容的参数,貌似也没找到,但官方的也不起作用,有知道的同学可以留言告诉我,谢谢啦!

祝您玩的愉快!

-------- ps --- 2024-3-1 更新 -----------------------------------------------------------------

已经不用打开 ob 软件了,代码改成了如下,直接让脚本修改 md 文件完事

# 当前日期
d=$(date "+%Y-%m-%d %H:%M:%S")
# 输入框
val="{{subinput:请输入}}"

#capture路径
file="/Users/xxxx/Documents/我的笔记/capture/capture.md"

# 内容模板
echo -e "${d}\n\n${val}\n\n---\n" > /tmp/~~capture.tmp1 && cat /tmp/~~capture.tmp1 "$file" > /tmp/~~capture.tmp2 && mv /tmp/~~capture.tmp2 "$file"

osascript -e "display notification \"您的灵感 $val 已记录成功!\" with title \"提示:\""

说明:以上代码在 Mac 上厕所通过,其他系统请自行修改。