虽然 Logseq 提供了强大的 Query 功能,能够汇总显示所有页面的待办事项,或者通过双链把待办事项链接到今日日志页面。但是,我更习惯用一种比较繁琐的方式整理待办事项:第二天早上,手动将前一天未完成的待办事项转移到当天的日志页面,前一天的日志中只保留笔记和已完成任务。
这种方式源自我之前用文本文件管理待办事项的习惯,它让我做到了每天回顾前一天完成的事情,并重新规划当天任务。当我使用 Logseq 后,也开始在 Logseq 中继续使用这种方式。不过,对于每天早上重复的复制粘贴操作,我还是感觉有点麻烦……
所以,我我想用一种「半自动化」的方式,让这个过程更加顺畅:也就是通过脚本,自动将前一天未完成的待办事项转移到今天。
由于我不熟悉 Logseq 插件的开发,所以我尝试了让 ChatGPT 生成一个 shell 脚本,完成这个任务:
#!/bin/bash
yesterday=$(date -d "yesterday" "+%Y_%m_%d")
today=$(date "+%Y_%m_%d")
input_file="${yesterday}.md"
output_file="${today}.md"
temp_file="temp.md"
awk '
BEGIN { RS = "\n"; FS = "\n"; ORS = "\n"; print_flag = 0; }
{
# 确定哪些 block 从昨天转移到今天。可根据自己的使用习惯修改此处
if ($1 ~ /^- (TODO|DOING)/) {
print_flag = 1;
} else if ($1 ~ /^- /) {
print_flag = 0;
}
if (print_flag == 1) {
print $0 >> "'"$output_file"'";
} else {
print $0 > "'"$temp_file"'";
}
}
' "$input_file"
mv "$temp_file" "$input_file"
经过测试,脚本能够完美运行。我主要在 Windows 上使用 Logseq,所以我安装了 Git for Windows,然后为这个脚本创建快捷方式,添加到开始菜单。以后我就可以在每天早上,直接点击开始菜单中的快捷方式,实现待办事项的自动转移。
当然,这种方法也适用于 Obsidian,或者其他类似的纯文本笔记工具。
留言