Emacs 在有截止日期的组织模式下选择条目

Emacs 在有截止日期的组织模式下选择条目,emacs,org-mode,Emacs,Org Mode,出于许多原因,我有一个带有长待办事项列表的单文件组织模式文件,其中优先任务有截止日期,非优先任务没有截止日期。 该文件现在太大,减慢了我的快捷方式。我的目标是将有截止日期和无截止日期的任务分为两个单独的文件。我曾尝试在日历上显示任务,并复制最近的任务(组织模式最多显示14天),但这只允许我复制它们的标题,而不允许复制任务正文 有没有办法只选择有截止日期的条目(用“*”)而不选择其他内容?我相信你可以很容易地按截止日期(C-C^,然后是d)对文件进行排序,然后找到包括截止日期在内的最后一个标题,用

出于许多原因,我有一个带有长待办事项列表的单文件组织模式文件,其中优先任务有截止日期,非优先任务没有截止日期。
该文件现在太大,减慢了我的快捷方式。我的目标是将有截止日期和无截止日期的任务分为两个单独的文件。
我曾尝试在日历上显示任务,并复制最近的任务(组织模式最多显示14天),但这只允许我复制它们的标题,而不允许复制任务正文


有没有办法只选择有截止日期的条目(用“*”)而不选择其他内容?

我相信你可以很容易地按截止日期(C-C^,然后是d)对文件进行排序,然后找到包括截止日期在内的最后一个标题,用C-Space标记所有截止日期任务,并将这些标题剪切并粘贴到新文件中


这有帮助吗?

我相信你可以很容易地按截止日期(C-C^,然后是d)对文件进行排序,然后找到最后一个包含截止日期的标题,用C-Space标记所有截止日期任务,并将这些标题剪切粘贴到新文件中


这有帮助吗?

前面答案中的排序/剪切/粘贴方法应该可以正常工作。如果您想更深入地了解组织模式,下面的替代方法可能很有趣,但它需要一些lisp知识以及一些组织模式函数

其思想是使用
org refile
重新填写条目。但这只会引用一个条目,所以我们使用
org-map-entries
将它映射到所有条目上

想法很简单,但实现有点混乱。首先,我们需要通过设置变量
org refile targets
来告诉
org refile
在何处重新填充,但由于可能存在全局设置,我们需要使用
let
在本地重新定义此变量

第二,我们需要选择正确的条目:
org-map-entries
采用一个
匹配的
参数,该参数可用于此项;特别是,
“DEADLINE\”
(测试条目的DEADLINE特殊属性是否不等于空字符串)可用于此目的。这几乎是可行的:

创建带有
*Tasks
第一级标题的
refiled.org
文件,然后使用
M-x ndk refile all
调用后一个函数。不幸的是,在每次调用
org refile
时,您都会被问及重新充值的目的地,但我没有深入探讨如何抑制它所遭受的交互。欢迎为此目的提出建议


顺便说一句,确保备份原始文件。

上一个答案中的排序/剪切/粘贴方法应该可以正常工作。如果您想更深入地了解组织模式,下面的替代方法可能很有趣,但它需要一些lisp知识以及一些组织模式函数

其思想是使用
org refile
重新填写条目。但这只会引用一个条目,所以我们使用
org-map-entries
将它映射到所有条目上

想法很简单,但实现有点混乱。首先,我们需要通过设置变量
org refile targets
来告诉
org refile
在何处重新填充,但由于可能存在全局设置,我们需要使用
let
在本地重新定义此变量

第二,我们需要选择正确的条目:
org-map-entries
采用一个
匹配的
参数,该参数可用于此项;特别是,
“DEADLINE\”
(测试条目的DEADLINE特殊属性是否不等于空字符串)可用于此目的。这几乎是可行的:

创建带有
*Tasks
第一级标题的
refiled.org
文件,然后使用
M-x ndk refile all
调用后一个函数。不幸的是,在每次调用
org refile
时,您都会被问及重新充值的目的地,但我没有深入探讨如何抑制它所遭受的交互。欢迎为此目的提出建议


顺便说一句,请确保备份原始文件。

谢谢,但排序部分不起作用。这是您设置的自定义快捷方式吗?不,这只是组织排序。您可能需要在尝试排序之前正确定位光标-查看文档中的函数
org sort entries
。谢谢,我刚刚看到我必须在排序之前选择所有条目。它的工作原理像一个charmthanks,但排序部分不起作用。这是您设置的自定义快捷方式吗?不,这只是组织排序。您可能需要在尝试排序之前正确定位光标-查看文档中的函数
org sort entries
。谢谢,我刚刚看到我必须在排序之前选择所有条目。工作起来像一个charmIt听起来好像你还没有探索过
M-x组织议程的力量
——我的日常工作流程使用了按四个标准对我的条目进行排序的组合——首先按
a
,然后按
o
,然后按
p
,最后,通过
t
组织排序条目
对扁平文本
组织模式
文件进行排序,然后当我想进行自定义搜索时,我会根据需要使用三个组织议程功能
组织议程列表
组织标签视图
,以及
组织搜索视图
。如果您想让一个复杂的示例在平面文本
org mode
文件中以编程方式进行排序,这里有一个链接:听起来您还没有探索
M-x org agenda
——我的日常工作流程使用了按四个标准对我的条目进行排序的组合——首先按
a
,然后按
o
,然后通过
p
,最后通过
t
对扁平文本
org mode
文件使用
org排序条目
,然后当我想进行自定义搜索时,我会根据需要使用三个org agenda函数
org agenda list
org tags view
,以及
org search view
。如果你想让一个复杂的例子
(let ((org-refile-targets '(("refiled.org" :level . 1))))
  (org-map-entries #'org-refile "DEADLINE<>\"\"" 'file))
(defun ndk-refile ()
  (org-refile)
  (beginning-of-line)
  (setq org-map-continue-from (point)))

(defun ndk-refile-all ()
  (interactive)
  (let ((org-refile-targets '(("refiled.org" :level . 1))))
    (org-map-entries #'ndk-refile "DEADLINE<>\"\"" 'file)))