Yaozhuwa / easy-typing-obsidian

This is a plugin of obsidian for users writing in an easy way.
501 stars 14 forks source link

【FR】高级功能支持 - 自定义规则运行指令(Command) #198

Closed Moyf closed 7 months ago

Moyf commented 7 months ago

Easy Typing 真的非常特别好用!!感谢开发!!!

在提这个 FR 之前已经自己调查过一波了,试了四五个插件,都满足不了需求,所以来询问一下。 这个功能 可能 会有点小众,但是如果支持了的话能做非常非常多的事!

TR;DR

能不能支持「输入特定字符后,(删除字符并)执行 Command」的功能?

需求描述

举个例子,比如我想插入当前的时间,我可以用 Templater 插件写一个 <% tp.date.now() %> 然后应用这个模板。

但是,不管是「按快捷键」还是「打开命令选框后选择模板」都有它们的劣势。 于是就想到了这个插件的自定义转换规则: image

目前它是能判断指定字符,然后替换成别的字符——那有没有可能把后续行为改成执行某项指令? 这样一来,就可以通过输入 -date| 来快速调用指定模板,并转换成实际的日期了。

会有一定的风险,所以可以做成默认关闭的额外开关

脑补了一下像是这个样子: image

可能的实现方法

之前为了这个需求找了很多相关插件,有一个叫 Inline Scripts 的可以运行 JS 代码。

像是调用 app.commands.executeCommandById('obsidian-hotkeys-for-templates:templater:command/代码粘贴 Code paste.md'); 就可以执行对应的 Command,应用指定模板; 但是这个插件的输入必须是 「前缀+关键字+后缀」 这样的形式,感觉不如 EasyTyping 的字符检测来得方便。

然后像 QuickAdd 也可以运行指令/用户脚本: image

但还是同样的问题:触发太麻烦了


绕了一大圈最后还是觉得 Easy Typing 的方式最方便,在输入过程中无缝触发也最为优雅。 所以来请求一下这个特性,感激不尽 🙏🏻

Moyf commented 7 months ago

自己过来补充一句,解决了! 万万没想到之前翻了一大堆 Text 和 Command 相关的插件,最后是在 Latex Suite 搞定的这个需求……

image 那边的替换可以调用 JS 代码,这样一来就可以运行其他命令了!

这个 Issue 可以关啦,感谢