如何让Org Agenda视图显示明日及指定天数内的截止任务?
分析你的Org Agenda自定义命令问题&修正方案
我来帮你梳理这段代码里的问题,再给你正确的写法和n天内截止任务的筛选方法~
原代码存在的核心问题
1. 字符串与引号格式错误
你把查询条件拆成了多个零散的字符串(比如"+TODO={NEXT}+DEADLINE>="<Today>"),Lisp语法要求每个完整的查询规则必须用一对引号包裹,而且日期占位符<today>要放在查询字符串内部,不能单独拆分。另外,TODO={NEXT}可以简化为TODO=NEXT,Org的标签查询支持直接这样写,更简洁。
2. 日期语法完全错误
Org Agenda的相对日期有固定语法:<today>代表今天、<+1d>代表明天、<+2d>代表后天,以此类推。你写的"<Today>"+1不符合任何Org查询规则,会被当成无效条件。
3. 括号嵌套混乱
每个tags-todo子命令的结构应该是(tags-todo "查询规则" (选项1) (选项2)),你在选项外面多套了一层不必要的括号(比如( (org-agenda-sorting-strategy ...)),这会直接导致Lisp解析失败。
4. 查询逻辑偏差
你写的DEADLINE>="<Today>"会匹配所有截止日期在今天之后的任务,但你想要的是「今日截止」的任务,应该用DEADLINE="<today>"来精准匹配当天截止的内容。
修正后的完整代码
(setq org-agenda-custom-commands '(("d" "Deadlined tasks" ((tags-todo "+TODO=NEXT+DEADLINE=\"<today>\"" (org-agenda-overriding-header "Deadline today") (org-agenda-sorting-strategy '(scheduled-down))) (tags-todo "+TODO=NEXT+DEADLINE=\"<+1d>\"" (org-agenda-overriding-header "Deadline tomorrow") (org-agenda-sorting-strategy '(scheduled-down))) (tags-todo "+TODO=NEXT+DEADLINE>=\"<today>\"&DEADLINE<=\"<+2d>\"" (org-agenda-overriding-header "Deadline in next 2 days") (org-agenda-sorting-strategy '(scheduled-down)))))))
如何筛选n天内截止的任务
要灵活筛选n天内的截止任务,只需调整查询规则中的日期范围:
- 包含今天在内的n天内:使用
"+TODO=NEXT+DEADLINE>=\"<today-1d>\"&DEADLINE<=\"<+nd>\""
这里<today-1d>代表昨天,确保不会漏掉今天截止的任务;<+nd>替换成具体天数,比如n=3就写<+3d>。 - 从明天开始的n天内:去掉昨天的范围,用
"+TODO=NEXT+DEADLINE>=\"<today>\"&DEADLINE<=\"<+nd>\""
内容的提问来源于stack exchange,提问作者myotis
相关产品推荐
相关产品推荐

