Emacs Org-mode:快速将 TODO 标记为 DONE

use*_*592 3 emacs org-mode

当我在线路上的任何位置时,我想有一个快捷方式来改变TODO直线到DONE(和返回)的状态,并且CLOSED时间标签折叠起来(不像速度键需要在第一个星号之前)。

目前我有2个选择:

  1. C-c C-t d TABorg-use-fast-todo-selection设置为td是我的DONE状态快捷方式并TAB隐藏子树),

  2. S-right TAB(使用org-shiftright,DONE是 之后的第一个状态TODO)。

你能帮我把它绑定到一个像C-c C-d. 请注意,我有更多的状态TODODONE但这个快捷方式也应该在这些状态之间切换。

加分项:附加命令也可以TODO在与上一个任务相同级别的下一行开始一个新项目。

非常感谢!

its*_*eyd 7

不确定“时间标签”是什么意思,但根据您列出的工作流程,以下命令应该可以执行您想要的操作:

(defun org-toggle-todo-and-fold ()
  (interactive)
  (save-excursion
    (org-back-to-heading t) ;; Make sure command works even if point is
                            ;; below target heading
    (cond ((looking-at "\*+ TODO")
           (org-todo "DONE")
           (hide-subtree))
          ((looking-at "\*+ DONE")
           (org-todo "TODO")
           (hide-subtree))
          (t (message "Can only toggle between TODO and DONE.")))))

(define-key org-mode-map (kbd "C-c C-d") 'org-toggle-todo-and-fold)
Run Code Online (Sandbox Code Playgroud)

至于TODO在与当前任务相同的级别插入新项目,org-mode已为此内置命令。你可以通过做来阅读它们

  • C-h f org-insert-todo-heading RET
  • C-h f org-insert-todo-heading-respect-content RET

  • 怎么样 (org-back-to-heading t) 而不是 (beginning-of-line) 来允许提议的功能可以工作的更广泛的位置? (3认同)