虽然 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,或者其他类似的纯文本笔记工具。

最后修改日期: 2024-04-11

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。