我在org-indent-mode模式下使用org-mode,这意味着除了一个星星以外的所有星星都被隐藏了,但是关卡保留了它们的缩进,从而创建了轮廓类型的效果。

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

搞砸了,变成这样:

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

这个问题可能与org-mode的精神背道而驰,但是有一种方法可以“保护”星星及其后面的空间,以便当我多次单击Delete时,它会将我带回到上一行文本,而不是比删除星星?

最佳答案

这是代码:

(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))))

关于emacs - 在组织模式下,如何保护星星不被删除?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18331315/

10-10 15:01