[Org] 如何在 Org-Mode 中设置周一到周六重复任务周日休息一天

比方我想周一到周六每天晚上 21:00 阅读,但是周日呢休息一天不阅读,之后每周如此。这个在 org mode 里指定重复任务时应该如何做呢?

我在论坛里找到了一个相似的贴子:如何在 Org-mode 中指定重复任务的结束日期? ,但是它并没有解决我的问题。

感觉提问的题目不是特别恰当,但不知道怎么改。

目前想到的一个丑陋的办法是,:SCHEDULED: 设置 6 个时间,周一到周六的晚上九点,然后每个时间每周重复:

* Reading
:SCHEDULED: <2022-11-26 Sat 21:00 .+1w>, <2022-11-27 Sun 21:00 .+1w>, ...

有没有其它 more elegant 一点的方法呢?

如果只是想要作为提醒的话可以试试这个,diary sexp 不支持 repeat

你说的“作为提醒”是通过 Agenda 吗?我试了一下,配置后 M-x org-agenda-list 打开 Agenda 会报错:

那试试这个

* test
<%%(memq (calendar-day-of-week date) '(1 2 3 4 5 6))>

这个可以的。

这个本质上是执行了一段 Elisp,根据返回值的真值来判断吗(如果 t 就加入日程)?

如果是的话可以在里面加一个对小时的判断,应该就可以了

是的,不过好像无法出现在 agenda 的 time grid 里面

SCHEDULED: <%%(memq (calendar-day-of-week date) '(1 2 3 4 5 6)) 21:00>

@fingerknight 这样就可以了

貌似不太得行

image

我不太理解在后边加 21:00 的含义,是否 <> 内其实还是需要日期格式如 <2022-11-26 21:00>, 所以 %%() 这个里边的返回值是不是需要是 2022-11-26 ?但我试了一下也不行

你的 org-mode 版本是多少呢? 我在 emacs -Q (org version 9.5.5) 下是可以的

突然发现你的 SCHEDULE 语法为什么是 :SCHEDULED: ?

按照 Deadlines-and-Scheduling ,不应该是 SCHEDULED: 吗?

天,我是哈皮。。。

是这个问题,把前面的冒号去掉后就可以了。因为直接插入日期我用 :SCHEDULED: 能正常使用,所以没太注意。

实在抱歉,浪费了这么长时间!

我觉得对于这种每天都会做的事情,不适合用org-agenda。用daily log,每天早晨的时候想下需要做的事情使用checkbox记录下比较合适。晚上的时候看daily log回顾下。

1 个赞

确实,这样也灵活些。

我是在设计课程表,虽然每天课程安排不一样的,但是都是每周重复做。然后我想每天晚上加一个阅读的项目,单纯是为了考虑设计的整体性和统一性。