想把所有附件MarkDown相对路径链接改成简短Wiki,尝试了几个方法都不尽人意。
Obsidian改名附件文件夹,引用这些附件的笔记会自动更新链接,但设置里已打开“简短路径+Wiki”,只能自动转换成简短MarkDown 。
尝试Link Converter插件,应该是批量正则修改,好家伙把代码快、行内代码、外部链接[百度](www.baifu.com)里的MarkDown链接全给我转换成Wiki了,这一刀切不是我想要的,幸亏备份了。
正则应该很难匹配YAML、行内代码里的链接,AI告诉我什么抽象语法树解析(AST),不动编程搞不明白。
请教有什么傻瓜点的插件或方法吗
z2647w
(这里404)
2
我用quickadd 脚本,之前论坛是其他大佬提供的思路
md2wiki.js
module.exports = async (params) => {
// Object destructuring. We pull inputPrompt out of the QuickAdd API in params.
const {
quickAddApi: { inputPrompt },
app,
} = params;
// 获取选中的内容
const { editor, file, containerEl } = app.workspace.activeEditor;
let content = editor.getValue();
// 定义正则表达式模式匹配 Markdown 图片链接
const pattern = /!\[(.*?)\]\((.*?)\.(png|jpg|jpeg|PNG|JPG|JPEG|GIF|gif)\)/g;
// 替换 Markdown 图片链接为 Wiki 图片链接
content = content.replace(pattern, (match, alt, url, ext) => {
if(alt){
return `![[${url}.${ext}|${alt}]]`;
}
return `![[${url}.${ext}]]`;
});
// 将替换后的内容写回编辑器
editor.setValue(content);
};
wiki2md.js
module.exports = async (params) => {
// Object destructuring. We pull inputPrompt out of the QuickAdd API in params.
const {
quickAddApi: { inputPrompt },
app,
} = params;
// 获取选中的内容
const { editor, file, containerEl } = app.workspace.activeEditor;
let content = editor.getValue();
// 定义正则表达式模式匹配Wiki图片链接
const wikiPattern = /!\[\[(.*?)(\|(.*?))?\]\]/g;
// 替换Wiki图片链接为Markdown图片链接
content = content.replace(wikiPattern, (match, urlAndExt, altSeparator, alt) => {
// 提取图片文件名(包含扩展名)
const urlWithExt = urlAndExt.trim();
let altText = "";
if (altSeparator && alt) {
altText = alt.trim();
}
if (altText) {
return ``;
}
return ``;
});
// 将替换后的内容写回编辑器
editor.setValue(content);
};
2 个赞