3

我在 org-indent-mode 中使用 org-mode,这意味着除了一个之外的所有星星都被隐藏了,但级别保留了它们的缩进,创建了轮廓类型的效果。

当我在编辑时,我似乎总是不小心删除了星号和文本之间的空间。这意味着:

一切都搞砸了,变成了这样:

或者有时,更糟糕的是,我什至删除了空格和一颗或多颗星星。然后我必须弄清楚我在哪里,并尝试重新输入正确数量的星星,让我回到正确的水平,这很痛苦。

这个问题可能违背了 org-mode 的精神,但是有没有办法“保护”星星和它们后面的空间,这样当我delete多次点击时,它会让我回到上一行而不是删除星星?

4

1 回答 1

3

这是代码:

(defun new-org-delete-backward-char (N)
  (interactive "p")
  (if (not (looking-back "[*]+ "))
      (org-delete-backward-char N)
    (previous-line)
    (end-of-line)))

(add-hook 
 'org-mode-hook
 (lambda ()
   (define-key org-mode-map (kbd "DEL") 
     'new-org-delete-backward-char)))

在我定义 org-speed-commands-user做诸如向上、向下插入标题等操作之前,我也弄乱了我的大纲。也许你想试试这个。此外,这非常有用:

(define-key org-mode-map (kbd "C-a")
              (lambda()(interactive)
                (if (looking-at "^[^*]")
                    (re-search-backward "^*")
                  (org-beginning-of-line))))

一旦您已经在行首,当您按下 时,它会将您带到标题的开头C-a

UPD

此版本具有删除区域的配置并转到行尾:

(defun new-org-delete-backward-char (N)
  (interactive "p")
  (cond ((region-active-p)
         (delete-region
          (region-beginning)
          (region-end)))
        ((looking-back "[*]+ ")
         (previous-line)
         (end-of-line))
        (t
         (org-delete-backward-char N))))
于 2013-08-20T09:27:10.460 回答