灵感来源
Markdown
本篇文章的思路来自b站一鸣惊人_001:修改Obsidian Excalidraw粘贴创建的图片文件名称_哔哩哔哩一鸣惊人。
我的图片、附件管理方式可以参考:Obsidian附件管理方式
在使用Obsidian中的Markdown时,如果需要更改图片的名称,可以直接在左边的导航栏修改:

修改后会自动更新引用过该图片的链接,使其能够正常显示。
或者在复制进Obsidian之前就改名,方便批量处理,我一般使用Total Commander批量改名:

Excalidraw
在使用Obsidian中的Excalidraw时,无论之前图片的名称是什么,复制进来后都会自动修改名称。如果需要自己更改图片的名称,也可以直接在左边的导航栏修改:

修改后会在Excalidraw的md文件中,自动更新引用过该图片的链接。
会显示提示:

同时如果查看md文件,可以发现其中的链接确实修改了。
修改之前:

修改之后:

也可以修改Excalidraw插件自动修改复制进来的文件名
在“库的位置\.obsidian\plugins\obsidian-excalidraw-plugin”,用VSCode或者记事本打开main.js文件。
搜索const r=this.scene;let o=来定位需要修改的地方,后面的Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")}就是原来的图片命名方式。

原来的名称为Pasted Image 20240502143048_926,后面的数字表示年月日、时分秒、毫秒。
我需要的名称样式:文件名_年月日时分秒_毫秒。后面添加毫秒,可以防止一次复制进多张图片而重名。
大家可以按照自己的需求修改。
将原来的Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")},替换为${this.file.basename}_${window.moment().format("YYYYMMDDHHmmss_SSS")}。
${this.file.basename}是表示文件名的变量。
注意左右的那两个 ` 符号不用动。
修改后:

然后重启Excalidraw插件或者直接重启Obsidian。
再复制进图片,就可以看到名称已经变为自己想要的了。

注意:每次更新Excalidraw插件,都会下载新的官方的main.js文件。所以要么每次都修改一下名称,要么就不更新Excalidraw插件。
谢谢大家观看!
