按照如下操作,可以实现n年日记的效果。
显示效果:
操作步骤:
1、创建“日记”目录
后续所有操作都在该目录下进行。
你也可以改名,dataviewjs中修改dirName的内容即可
2、创建“template”文件
3、下载dataview插件,并开启配置
4、创建“历史上的今天”文件
你也可以改名,dataviewjs中修改26行的“历史上的今天”内容即可
代码
``` dataviewjs
const dirName = "日记"; //日记存放的文件夹名称
const startYear = 2015; //日记开始的年份
// 引用的文件 yyyy-MM-dd.md
const filename = app.workspace.getActiveFile().basename;
const fileDate = moment(filename, "YYYY-MM-DD", true);
const monthDay = fileDate.format("MM-DD");
const lastYear = fileDate.year() - 1;
const currentPath = dv.current().file.path;
// 日记文件夹下所有笔记,按文件名建立索引
const pageMap = new Map(dv.pages(`"${dirName}"`).map(p => [p.file.name, p]));
let found = 0;
for (let year = lastYear; year >= `${startYear}`; year--) {
const page = pageMap.get(`${year}-${monthDay}`);
if (!page || page.file.path === currentPath) continue;
found++;
dv.header(3, `📅 ${year} 年的今天:${dv.fileLink(page.file.path, false, page.file.name)}`);
const content = await dv.io.load(page.file.path);
const lines = (content || "").trim().split(/\r?\n/);
//不渲染最后一行,避免递归显示
if (lines[lines.length - 1] === "![[历史上的今天]]") lines.pop();
dv.paragraph(lines.join("\n").trim() || "*(空)*");
dv.paragraph("---");
}
if (found === 0) {
dv.paragraph("*历史上的今天没有写日记哦~*");
}
```
5、设置日记格式
6、使用自带的日记插件或者calendar插件写日记
如果已经按天写了日记,在日记末尾插入引用即可。
让ai读取“日记”文件夹,给出如下命令:
除了“历史上的今天”和“template”,在每个文件末尾,新增一行,写入“![[历史上的今天]]”





