如何在Emacs Org-mode中结束TODO列表

7

我有一个TODO项目列表,现在想要在同一个文件中创建两个TODO列表,但是第一个列表似乎无法结束。

FIRST LIST: TODAY
* TODO Item 1
  Description
* TODO Item 2
  Description


SECOND LIST: TOMORROW
* TODO Item 3
  Description
* TODO Item 4 
  Description

不幸的是,SECOND LIST: TOMORROW 现在是 TODO Item 2 的描述的一部分。这意味着当我按下 shift-tab 时,我不再看到文本 SECOND LIST: TOMORROW,因为它被折叠在 TODO Item 2 下面。我看到的是..

FIRST LIST: TODAY
* TODO Item 1
* TODO Item 2
* TODO Item 3
* TODO Item 4 

我想看到的是...

FIRST LIST: TODAY
* TODO Item 1
* TODO Item 2


SECOND LIST: TOMORROW
* TODO Item 3
* TODO Item 4 

我怎样才能退出描述模式并开始一个新的独立列表?
编辑/更新:我在列表之间添加了空格以响应评论。从 here,'一个列表在每个项目结束之前结束,这意味着在顶层项不超过任何行缩进。它还在两个空行之前结束'---从这里来看,我猜测必须有一种方法可以在.org文件中拥有多个列表。然而,在我的例子中,我注意到2个空行并没有结束列表,而是继续作为描述。
这是否是其成为议程而不是普通列表的特征?我知道以下枚举/确实/另一方面结束列表:
FIRST LIST: TODAY
1. Item 1
   Description
2. Item 2
   Description


Second LIST: Tomorrow
1. Item 3
   Description
2. Item 4
   Description

我并不是要对emacs巫师们(让我感到惊奇)表示任何不敬之意,只是我一直坚持寻找一种方法来实现这个目标,而且我理解这个工具有很多我还不了解的强大功能。但我希望在一个.org文件中拥有两个独立的非枚举待办事项清单,这样我就可以快速地(对我来说)将未完成的任务从今天调整到明天,而无需深入设置依赖关系和截止日期。


除非您创建新的列表结构,否则org-mode怎么知道“FIRST LIST”何时结束 - kindahero
1
没错,@kindahero,我正在寻找一个终止列表的分隔符。下面的回复告诉我这是不可能的,所以我将保持开放状态,直到有可能出现,无论是一个小模式,还是一个分隔符,或其他。 - Mittenchops
我同意org-mode需要某种结束列表分隔符——在许多情况下,当您想要插入快速子列表时,它会非常有用,而不仅仅是在顶层,就像您的示例一样。对于缩进的大纲,这很容易做到,但由于这个原因,当将缩进的大纲转换为org-mode时,我遇到了麻烦。目前最好的方法是添加类似于* - 的内容,以指示返回到上一个级别,尽管这样做有点笨拙。我想代码都建立在当前结构的基础上,但我并没有深入研究过。 - Brian Burns
3个回答

22
  • Header 1
  • Header 2
  • Some text here...
* first todo list. 
** first item in list. 
** second item in list

* second todo list 
** first item and so on... 

这还让您可以折叠列表。


6
这就是org-mode或其他任何提纲软件的工作方式。如果您想以其他方式工作,则需要使用其他软件。这个问题的变种是“如何在开始子节后向父节添加文本?”答案是您无法这样做。 - event_jr
1
org-mode是一个主要模式。它将整个缓冲区视为一个大纲。如果您需要一个带有一些待办事项列表的文档,我建议尝试找到更适合emacs的扩展。可能会有一个次要模式可以给您所需的功能。 - daramarak
1
@event_jr和daramarak,你们有其他推荐或者次要模式吗?听起来我在这里引起了一些不满,但我并没有要求emacs召唤死人或者什么——我只是想在一个文本文件中实现两个独立的列表。多个独立列表是相当常见的事情,就像每个网站上一样。Org-mode被推荐作为个人wiki应用程序的替代品,具有此功能。 - Mittenchops
1
@Mittenchops,你有看到你链接页面上的脚注1吗?只有在缩进后,"*"才能作为列表的起始符号。所以你的列表实际上是标题。 - event_jr
我正在关闭旧线程,但是即使有注释1,它仍然说明“它也在两个空行之前结束”,这应该可以处理将标题与列表分开。但是这个列表只是没有以两个空行结束。 - Mittenchops
显示剩余4条评论

9
你无法在单个文件中这样做。Org将同一级别的所有内容都视为属于同一个标题,直到你到达另一个相同级别的标题。没有办法“结束”一个标题而不是开始一个新的标题。
这样做有一些缺点,如果你想要一个子标题并返回到父级别而不添加新标题,则必须使用空标题。这意味着唯一不属于标题的文本是第一个标题之前的文本,实质上相当于摘要。
我能想到的两个解决方案是:
1. 使用像daramarak提供的解决方案之类的解决方案。 2. 使用两个单独的Org文件,然后使用议程作为一种跟踪多个TODO的方法,这些TODO可以放在独立的列表中,仍然可以组合在一起以查看概述。

8

普通列表以“-”开始,以空白行结尾:

First list
- Item 1
- Item 2

Second List
- Item 1
- Item 2

但是TODO只能在标题(以*开头)中识别。我认为这是org-mode设计的一部分。您可以通过标记行并按下C-c *将列表快速转换为标题。 类似于TODO的更轻量级的功能,称为“复选框”,可以在普通列表中使用,用于列出子任务列表。点击此处了解更多。

List a
- [X] Item 1
- [ ] Item 2

List B
- [ ] Item 1
- [ ] Item 2

C-c C-c可以切换列表项。列表也可以嵌套,并显示其子级的状态。

- [ ] List A
  - [ ] Item 1
  - [ ] Item 2
- [-] List B
  - [X] Item 1
  - [ ] Item 2

另一种可能性是使用内联任务 C-c C-x t,它们有特定的结束方式。
List 1
*************** TODO Item 1
*************** END

*************** TODO Item 2
*************** END
List 2
*************** TODO Item 1
*************** END
*************** TODO Item 2
*************** END
*************** TODO 
*************** END

更多讨论可在此处找到。


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