【发布时间】:2012-09-09 06:00:49
【问题描述】:
我正在学习 org 模式,并且刚刚了解了稀疏树(C-c / t 及其亲属)。如何返回到我的 org 文档的原始、非稀疏视图?
我通过反复试验发现 TAB 循环顶部节点有效,有没有更好的方法?
【问题讨论】:
-
在此处查看类似问题:stackoverflow.com/q/6666862/753817
我正在学习 org 模式,并且刚刚了解了稀疏树(C-c / t 及其亲属)。如何返回到我的 org 文档的原始、非稀疏视图?
我通过反复试验发现 TAB 循环顶部节点有效,有没有更好的方法?
【问题讨论】:
Ben K. 走在了正确的轨道上。间接缓冲区是 emacs 最强大的功能之一。
这个函数做了我希望org-show-todo-tree 做的事:创建一个新的缓冲区来显示未完成的 TODO 项,不要搞砸我的 org 文件的树状态,并清除不必要的发生突出显示。
(defun org-todo-buffer ()
"Create new indirect buffer with sparse tree of undone TODO items"
(interactive)
(clone-indirect-buffer "*org TODO undone*" t)
(org-show-todo-tree nil) ; mimics interactive usage
(org-remove-occur-highlights)
)
在这个新缓冲区中,您可以更改反映在您的 org 文件中的 TODO 项状态,并且您可以在完成后简单地终止间接缓冲区。
【讨论】:
到现在很晚,我注意到选择所有标签然后取消突出显示/取消缩小似乎做正确的事情。
C-c \ *
C-c C-c
【讨论】:
我通常会使用C-x C-v RET (find-alternate-file) 或M-x revert-buffer 来解决这个问题。这仅在您没有未保存的编辑时才有效。
【讨论】:
所以,现在是 2018 年,(AFAIK)这个功能仍然不存在。
到目前为止,我发现的最佳解决方法是创建一个间接缓冲区 (C-x 4 c),然后在其中运行 org-sparse-tree。原始窗口不受影响,因此您保留视图,对间接缓冲区的更改将更新原始缓冲区(反之亦然)。完成后,您只需关闭间接缓冲区。
【讨论】:
我通常只运行org-mode 命令,这似乎让我回到了原点。
【讨论】:
正如您所说,您可以通过 S-TAB 进行可见性骑行,但我个人不喜欢可见性骑行,因为我不确定自己在骑行中的哪个位置。
所以我刚刚创建了这个简单的 org-agenda-custom-command,它显示所有内容而不突出显示。只需将其添加到您的 .emacs 文件中即可。
(setq org-agenda-custom-commands
; ... other commands
`(("z" "All" occur-tree "."
((org-show-entry-below t)
(org-highlight-sparse-tree-matches nil)))))
可能有更好的方法来做到这一点,SO 的美妙之处在于有人会告诉我们:)。
【讨论】:
C-c C-c 应该清除稀疏树的隐藏和突出显示,但据我所知,你不能只是回到你对它的“最后一个视图”。如果要返回全视图,请使用Shift-Tab 循环所有条目。
【讨论】:
TAB-cycling anywhere 只会隐藏org-sparse-tree 突出显示的条目。
要删除覆盖,您需要实际编辑缓冲区。
【讨论】: