我在一个具有以下结构的大型组织模式文件中做笔记:
* Toto, A
Notes about Toto.
* Titi, C
Notes about Titi.
* Tutu, A
Notes about Tutu.
我想对文件进行排序,以使所有带有A
的标题都以开头,带有B
,而所有标题都以之前依次开头C
,依此类推。有没有一种自动的方式来执行组织模式?
C-c ^
从内存中(可能是类似的结尾^
,例如,C-x C-c ^
等等)
我在一个具有以下结构的大型组织模式文件中做笔记:
* Toto, A
Notes about Toto.
* Titi, C
Notes about Titi.
* Tutu, A
Notes about Tutu.
我想对文件进行排序,以使所有带有A
的标题都以开头,带有B
,而所有标题都以之前依次开头C
,依此类推。有没有一种自动的方式来执行组织模式?
C-c ^
从内存中(可能是类似的结尾^
,例如,C-x C-c ^
等等)
Answers:
有一个org-sort
命令,但是您可能需要调整文件结构以获得所需的结果(如果我正确理解了这个问题)。
使用org-sort
(C-c ^
)对大纲中的条目,表中的行或列表中的项目进行排序。例如,您可以从标题中调用org-sort
以对所有子项进行排序。
在您的示例中,您希望对大纲中的顶级条目进行排序,因此请首先选择所有条目。打电话时org-sort
,系统会提示您如何排序:按字母顺序,按优先级等等。
我从您的示例中猜测,您期望的最终结果是:
* Toto, A
Notes about Toto.
* Tutu, A
Notes about Tutu.
* Titi, C
Notes about Titi.
也就是说,您希望按字母顺序排序,但是该结尾字母优先吗?没有内置的排序方法。如果您更改了条目以将排序字母放在首位(例如A, Toto
),则可以使用常规的字母排序。另一个选择是将信息移到每个项目的属性,然后可以按属性排序。
正如@nanny在评论中建议的那样,org-sort
还可以调用自定义排序功能。这样,您可以使用现有文件,而不必更改所有条目。这是一个排序函数,用于查找当前的标题文本并将最后一个字符追加到开头,以便优先。如果您的头条新闻不都遵循确切的模式,那么您将需要更强大的功能。
(defun my-sort-last-letter ()
(let ((text
(plist-get
(cadr (org-element-headline-parser (line-end-position)))
:raw-value)))
(concat (string (aref text (- (string-width text) 1))) text)))
[f]unc
排序类型,org-sort
然后编写一个函数以根据现有结构进行排序。
query-replace-regexp
编辑了一些严格遵循正确格式的标题后,这很好地解决了我的问题。比将我所有的数据转换为属性要容易得多。
org-sort
吗?