请教md、Wiki路径如何互转?

想把所有附件MarkDown相对路径链接改成简短Wiki,尝试了几个方法都不尽人意。

Obsidian改名附件文件夹,引用这些附件的笔记会自动更新链接,但设置里已打开“简短路径+Wiki”,只能自动转换成简短MarkDown ![标题](图片.jpg)

尝试Link Converter插件,应该是批量正则修改,好家伙把代码快、行内代码、外部链接[百度](www.baifu.com)里的MarkDown链接全给我转换成Wiki了,这一刀切不是我想要的,幸亏备份了。

正则应该很难匹配YAML、行内代码里的链接,AI告诉我什么抽象语法树解析(AST),不动编程搞不明白。

请教有什么傻瓜点的插件或方法吗:full_moon_with_face:

我用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 `![${altText}](${urlWithExt})`;
        }
        return `![${urlWithExt}](${urlWithExt})`;
    });

    // 将替换后的内容写回编辑器
    editor.setValue(content);
};
2 个赞

不过我这个就转图片用,你的需求不确定可行不