由于多种原因,我有一个包含长待办事项列表的单个文件组织模式文件,其中优先级任务具有截止日期,非优先任务没有截止日期。
该文件现在太大并且减慢了我的快捷方式。我的目标是将有和没有截止日期的任务分成两个单独的文件。
我试图在日历上显示任务并复制最近的任务(组织模式显示长达14天),但这只会允许我复制标题而不是任务主体。在截止日期前选择组织模式下的条目
有没有办法只选择条目(标有“*”)的截止日期,将其他所有内容都删除?
由于多种原因,我有一个包含长待办事项列表的单个文件组织模式文件,其中优先级任务具有截止日期,非优先任务没有截止日期。
该文件现在太大并且减慢了我的快捷方式。我的目标是将有和没有截止日期的任务分成两个单独的文件。
我试图在日历上显示任务并复制最近的任务(组织模式显示长达14天),但这只会允许我复制标题而不是任务主体。在截止日期前选择组织模式下的条目
有没有办法只选择条目(标有“*”)的截止日期,将其他所有内容都删除?
上一个答案中的排序/剪切/粘贴方法应该可以正常工作。如果你想深入到组织模式,下面的替代方法可能是有意义的,但它需要一些关于lisp的知识以及一些组织模式功能。
这个想法是使用org-refile
重写条目。但是,这只会记录一个条目,所以我们使用org-map-entries
来映射所有条目。
这个想法很简单,但实现有点混乱。首先,我们需要通过设置变量org-refile-targets
来告诉org-refile
需要重写的位置,但由于可能存在全局设置,因此我们需要使用let
在本地重新定义此变量。其次,我们需要选择正确的条目:org-map-entries
需要一个matching
参数可以用于那个;特别是"DEADLINE<>\"\""
(测试条目的DEADLINE特殊属性不等于空字符串)可用于此目的。这就几乎作品:
(let ((org-refile-targets '(("refiled.org" :level . 1))))
(org-map-entries #'org-refile "DEADLINE<>\"\"" 'file))
差不多,但不完全:每次org-refile
被调用时,它留下点的下一行,ORG-地图输入的开始移动到行的末尾在尝试下一场比赛之前;所以如果你有两个DEADLINE项目,一个接一个,第二个将被错过。解决方法是确保将org-map-continue-from
设置为缓冲区中不会错过下一个标题的位置。把所有的这一起,你可以定义以下两个功能:
(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)))
创建refiled.org
文件与* Tasks
第一级标题,然后调用后者的功能与M-x ndk-refile-all
。不幸的是,您会被询问有关每个致电org-refile
的重新加载目的地,但我没有深入探讨如何驯服它所遭受的交互的适合。为此目的的建议值得欢迎。
顺便说一句,请务必备份原始文件。
这听起来像你还没有探索过'Mx org-agenda'的力量 - 我的日常工作流使用了按照四个标准对我的条目进行排序的组合 - 首先是'a',然后是'o',然后最后用'org-sort-entries'作为'org-mode'文本文件,然后当我想拉起自定义搜索时,我使用三个org-agenda函数根据需要'org-agenda-list','org-tags-view'和'org-search-view'。如果你想要一个复杂的例子在flat-text'org-mode'文件中以编程方式排序,这里是一个链接:http://stackoverflow.com/a/22232709/2112489 – lawlist