Emacs org-mode,如何在工作日执行重复任务而不在周末执行?

40

我每天都有任务要做(例如 Bugzilla 整理),但只在周一到周五完成,周末不工作。

当我使用类似这样的东西时:

SCHEDULED: <2015-02-07 Sat ++1d>

它每天都会重复,包括周末。我能改变这个吗?

4个回答

32

如果你只需要一个提醒,而不需要在你的org文件中标记它们为“完成”,那么你可以使用日历集成来处理这些情况。

** Triage Bugzilla Entries 09:00-10:00
   <%%(memq (calendar-day-of-week date) '(1 2 3 4 5))>

这将仅在工作日向您的日程安排中插入条目,但不是任务。


2
创建任务时,我只需在短语的init中设置“TODO”,如下所示:** TODO 每日 13:45-14:00 <%%(memq (calendar-day-of-week date) '(1 2 3 4 5))> - helderburato

12

一种方法是每个工作日都制定一个TODO清单,例如:

* TODO My task  
  SCHEDULED: <2015-02-09 Mon ++1w>

* TODO My task  
  SCHEDULED: <2015-02-10 Tue ++1w>

这与另一个答案不同:
* TODO My task
  SCHEDULED: <2015-02-09 Mon ++1w>
  SCHEDULED: <2015-02-10 Tue ++1w>
  SCHEDULED: <2015-02-11 Wed ++1w>
  SCHEDULED: <2015-02-12 Thu ++1w>
  SCHEDULED: <2015-02-13 Fri ++1w>

有人指出一个问题:

这里存在一个问题。当我关闭一个任务时,它会将所有已安排的项目向前移动一周,而不仅仅是到期的那个任务 :-/

该问题的原因是所有时间戳都与一个TODO相关联。


10

不幸的是,org-mode似乎没有一个简单的命令支持这个功能,但你可以通过设置同一项的多个每周重复来复制它,如下所示:

* TODO My task
  SCHEDULED: <2015-02-09 Mon ++1w>
  SCHEDULED: <2015-02-10 Tue ++1w>
  SCHEDULED: <2015-02-11 Wed ++1w>
  SCHEDULED: <2015-02-12 Thu ++1w>
  SCHEDULED: <2015-02-13 Fri ++1w>

9
这有一个问题。当我关闭一个任务时,它会将所有预定的项目向前推一个星期,而不仅仅是到期的那个项目 :-/ - Leo Ufimtsev
1
所以确实是这样,我不记得它以前做过这件事。那么我能为您提供的最好建议就是为每一天创建一个不同的任务(这甚至更糟):* TODO 我的任务 SCHEDULED: <2015-02-09 周一 ++1w> * TODO 我的任务 SCHEDULED: <2015-02-10 周二 ++1w>等等。 - tanzoniteblack
3
感谢您的留言。与此同时,我找到了一个解决方法。我将其安排为每日任务,但将其设置为 org-habbit,这样我不会提前数天就看到该任务。在周六/周日,我不使用 emacs,所以下次看到任务是在周一回到办公室时。这种方法效果还不错。 - Leo Ufimtsev

1

有 Habit Plus 包,在 https://github.com/myshevchuk/org-habit-plus,它增强了 Org Mode 中的习惯功能。

在手册中查看 Org Mode Habits:https://orgmode.org/manual/Tracking-your-habits.html

从 Habits Plus github 页面的 Readme.org 中:

安装

只需将 org-habit-plus.el 放入加载路径中,并将 org-habit-plus 添加到 org-modules 列表中即可。

工作原理

只需在 :HABIT_WEEKDAYS: 属性中指定期望执行习惯的工作日(1 = 星期一,7 = 星期日,以空格分隔)。

因此,首先您需要在 Org 中启用 Habits 模块,并将任务设置为习惯,指定其重复频率。有关详细信息,请参见上面的 Org 手册链接。

然后您需要安装 Habits Plus。请参见 github 页面以获取 org-habit-plus.el 文件。

然后,您将为您的习惯添加一个 :HABIT_WEEKDAYS: 属性,并给该属性赋值 1 2 3 4 5,以指示它应在周一至周五完成。


太酷了,谢谢!这是最好的答案,也是唯一一个不妥协的答案,它可以每天推进一项待办事项并跳过周末!然而,我认为这应该作为org-habit的附加功能提交到上游,而不是保留在与上游不同步的分支中。我已经在https://github.com/myshevchuk/org-habit-plus/issues/4上提交了相关问题。 - Adam Spiers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接