- 一键自动编号
- 不会错位
- 长文也可用
- 多组编号互不干扰
- 自定义编号组名
- 可自定义格式
- 原子性
JS 代码
await app.vault.process(app.workspace.getActiveFile(), data => {
var match = new Set(data.match(/<span data\-auto\-index="(.*)">/g))
var heads = [...match]
var note = data
heads.map(head => {
head.replace('-', '\-')
var splits = note.split(new RegExp(head+'(?:.*)<\/span>','g'))
var result = [splits[0]]
for(var i=1; i<splits.length; i++){
result.push(`${head}${i}</span>${splits[i]}`)
}
note = result.join('')
})
return note
})
使用方法
新建一个xx.js文件,写入js代码。
在需要编号的地方写入<span data-auto-index="xxx"></span>,xxx为自定义编号组名。
在该笔记任意地方写入(需Dataview插件,并开启内联js查询)
`$=dv.view('.../xx')`
'.../xx'为xx.js的路径,不含后缀。
自动编号后,删掉或注释掉。不删就是隔段时间自动编号,不推荐,耗性能。
可以将xx.js代码添加到命令,或者使用其它js插件。
编号前
<span data-auto-index="a"></span>
<span data-auto-index="a">0</span>
<span data-auto-index="b"></span>
<span data-auto-index="a">999</span>
<span data-auto-index="b"></span>
<span data-auto-index="a">1</span>
编号后
<span data-auto-index="a">1</span>
<span data-auto-index="a">2</span>
<span data-auto-index="b">1</span>
<span data-auto-index="a">3</span>
<span data-auto-index="b">2</span>
<span data-auto-index="a">4</span>
需要注意编号组名避免出现正则相关符号。
自定义格式只需要修改代码中的正则表达式即可。