【建议】支持简单编辑单个 Markdown 文件 中提到英文论坛的帖子,#125 有人分享 Shell 代码。搜索结果说 Shell 只适用 Mac 和 Linux 系统,为 Windows 系统使用我写了 .bat。
代码原理同英文论坛,双击一个 .md 文件时,
在已建立索引的前提下,用上级最近的库打开该 MD,若不在库用其他软件打开。
或许可以将不在库的代码改为用 mklink 软链接到某个库,编辑完后再清除或不清除下次继续用,这样不在库的 MD 文档也可以用 Obsidian 打开。不清楚有无损害,仅提供思路。
蓝奏云下载链接 密码: 7mcr,选择“obDefault2exe”。解压,文件夹内提供了全部所需。
第 1 步:打开文件夹内的 obDefault.txt,填写想用来打开不在库 MD 的软件路径。注意路径中间有空格的部分用 "
包裹,参考代码示例:
修改完成后保存。将 .txt 后缀改为 .bat。
第 2 步:打开文件夹内的 SlimmBattoExe.exe
- 想换 Icon,将你的 .ico 命名为“obDefault”,放在和楼主准备的图标同样的位置。
- 选择 Windowless Express,选择你修改好的这个 .bat。
- .exe 将生成在同文件夹。若一开始图标未显示,先继续完成后续配置步骤。
第 3 步:.md 文件右键 - 打开方式 - 其他应用 - 下滑底部“在电脑上选择应用” - 选择你生成的 .exe 打开 - 选择“始终”。
该方法免安装,除添加打开方式外不修改注册表,最终只会生成一个 Exe 文件,轻量便携。
相关:批处理 for 语句从入门到精通
240923
直接使用 .bat 作为打开应用的程序没有问题,但在第 2 步转化为 Exe 后,如果打开的文件路径包含 & 号,会被解释为 Bat 语法而非字符串,导致路径不对。如果对此介意可跳过该步骤直接选择 .bat。如有更好的 Bat 转 Exe 工具推荐,或者如何修改代码使其适应该工具的建议,欢迎跟帖。
240929
提供一个用 AHK v2 语言再次实现的版本,见 ahk2-store。我不确定不安装 AHK 能不能用,如果有人试了能用的话希望跟帖告知。只需下载 obDefault.exe,参考 Batch 语言版本的第 3 步选择 .exe 打开即可。
AHK 版本读取 Exe 同目录下路径为 .ignore/obDefault.txt
的文件作为设置。按照相同路径和名称创建文件夹和 txt 文件,在 txt 第一行填写想用来打开不在库 MD 的软件路径,注意 "
包裹,第二行填写 open
(有其他已注册的协议也可改为对应名称,如 open-tab
,参 #13),即可完成配置。任何问题可参考库中示范。
AHK 版本不存在解析问题。当然像 mklink 这种属于 Batch 语言的也就不能很方便地在这基础上继续修改了。
2 个赞
双击md文件后,不想弹出cmd窗口,请问应该如何修改代码呢?
1 个赞
可以改成vbs版本就不闪现了,或者用vbs打开bat,并设置为隐藏
比如,将下面的代码保存为xxx.vbs,并修改xxx.bat改成你自己的bat名字,直接运行vbs或加到右键菜单中。
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "%comspec% /c xxx.bat", 0
当让,如果你愿意,完全用vbs实现也是可以的。
或者也可以把bat编译为exe
或者用 hidecmd.exe执行。下载地址:Releases · agowa/hidecmd · GitHub
2 个赞
@autumn_1992 @wilson 最后还是想办法打包成 Exe 了。#1 已更新。
1 个赞
liux
(calmwaves)
6
1 个赞
那个我测试不能打开库外的文档,下载下来文件较多,封装好的软件难自行微调改进。
#1 方法免安装,最终只会生成一个 Exe,也不需要懂 Shell 编程。若愿意想加点功能也容易。
如果说的是填软件路径那步,每个人用的软件和安装路径都不一样,只能自己填。
#6 提到的软件,就是 #1 提到的英文论坛帖子的 #45 嘛。本经验分享话题最初只是分享 Batch 代码,那个不用打包,看个人需求可查看历史记录直接复制粘贴,最后想的办法才打包成 Exe 的,积累这类经验于我无益,我也觉得合适的情况下应尽可能留待专业人员。
补充:第一句话提到的 Shell 是狭义的,因为 Mac 把自己的 CMD 代码称为 Shell,英文论坛帖子也是称自己的为 Shell 代码。只说 Shell 作为英文单词,能代指的就多了。这些都是搜索引擎显示的内容,如果哪点误导了,希望专业人士跟帖指正。
1 个赞
liux
(calmwaves)
8
不知道你怎么测试的,但是这个只要在release里下载exe文件,然后安装好,之后将md文件与这个软件关联上就好了
至于库外的文件,开发者提供的三种模式,第一种模式就和你的逻辑是一样的,也可以在配置文件里改md编辑器
1 个赞
liux
(calmwaves)
10
嗯是的,因为我也是之前从一楼提到的英文帖子里看到了这个软件,并且使用了很长一段时间了
而且我就是win,所以对于一楼说到的
“搜索结果说 Shell 只适用 Mac 和 Linux 系统,为 Windows 系统使用我写了 .bat。”
提出来这个软件。
另外这个软件有免安装便携版,github上说的很清楚,只是我更喜欢使用安装版本。
楼主自己遇到问题自己写代码解决,并且把完整的解决方案分享在论坛上帮助更多的使用者,值得点赞
之前就试过便携版,刚才又试了,还是不能打开库外的文档。
不过既然层主用了很长时间了,可能只是我比较倒霉吧。
Obsidian 原装 URL 只能在当前活动文档打开新文档,可以通过插件注册的方式自定义 URL 实现多样化的打开。示例 main.js 代码如下:
const ob = require('obsidian')
module.exports = class extends ob.Plugin {
onload() {
this.registerObsidianProtocolHandler('open-tab', (url)=> {
if (url.action != 'open-tab' || !url.file) return
this.app.workspace.getLeaf('tab').openFile(this.app.metadataCache.getFirstLinkpathDest(url.file, url.file))
})
}
onunload() {}
}
加载插件重启 Ob 一次后,obsidian://open-tab?
的 URL 将会默认在新标签页打开。
现在,在 #1 修改完路径后,我们可以额外修改如下了:
如果不明白怎么操作,也可不用代码,直接使用 Advanced URI 插件,参考插件说明的 URL 格式修改。显而易见楼主又没能成功所以又写了代码,不过或许不影响坛友们使用这个插件。
3 个赞
感谢回复,URL 是 URI 的子集,应该都行,我感觉 Ob 的链接更像 URL。
更新:Obsidian Help 里貌似把名称统一为 URI 了,那就叫 URI 好了。
1 个赞