请问如何批量设置小标题

一篇文档中包含数个多级标题:编、分编、章、节、条、款、项,怎么操作能批量将文档中的编设置为1级标题,分编设置为2级标题,章设置为3级标题,节设置为4级标题,条设置为5级标题(正文中涉及到引用第……章/第……条的排除)?手动一个一个改动工作量太大了,请问各位大佬有没有什么快捷操作,谢谢!

用VSCode打开正则替换吧,不然每个段落也没特殊的标识
我用的笨办法:

  • 设置里的“设为小标题 1/2/3/4/5/6”设置个快捷键我一般设置为Ctrl+数字
  • Alt键单击要设置的行(多光标)
  • Ctrl+数字一次多行设为指定的标题
1 个赞

多谢,已经比我的方便很多了

使用插件linter, 设好七条正则替换规则, 即可一键完成修改.

1 个赞

没找到插件使用教程,使用还是有些门槛

总共有几篇?多的话可以写个脚本来做批量操作

数量不少,但是标题等级不统一,有的文章有编、分编、章、节、条、款,有的文章只有其中的一部分。脚本属于高阶操作了吧,我这种小白能上手吗?

编、分编、章、节、条、款 对应的标题等级是确定的吧?确定的话就好说
markdown最多支持到六级标题,“款”需要作为标题吗?

我刚写了一个,可以直接修改一个文件的:

{
    function change(text) {
    return text.split("\n").map((line) => {
        line = line.replace(/^第(.+)分编/, "## 第$1分编");
        line = line.replace(/^第(.+)编/, "# 第$1编");
        line = line.replace(/^第(.+)章/, "### 第$1章");
        line = line.replace(/^第(.+)节/, "#### 第$1节");
        line = line.replace(/^第(.+)条/, "##### 第$1条");
        return line;
    }).join("\n");
    }
    let file = app.workspace.getActiveFile();
    app.vault
        .read(file)
        .then(text => app.vault.modify(file, change(text)));
}

方式是 shift + ctrl + i打开控制台,然后打开相应的文件,复制代码执行。目前只支持到五级标题

效果:
执行前:


执行后:

1 个赞

也可以直接用 await app.vault.process(file, text=> change(text))

1 个赞

我是mac系统 按shift + ctrl + i无反应,是不是需要安装插件才能运行代码?

mac 好像是 option+command+i ?你搜一下

谢谢大佬!到windows电脑上已近批量替换成功了。

请问大佬,这个帖子的问题能用脚本解决吗?