emacs - 在组织模式下,如何保护星星不被删除?

标签 emacs org-mode aquamacs

我在 org-indent-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 时。

更新

此版本有删除区域的规定并转到行尾:

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

相关文章:

search - Emacs:结合 isearch-forward 和 center-top-bottom

emacs - 组织文件之间的链接

org-mode - 如何使用单个命令归档所有已完成的任务

python - numpy 1.6.1和python 2.7以及ropemacs崩溃代码完成

emacs - 如何为 defcustom 定义的变量设置缓冲区本地值?

emacs - Org-mode sh block 在使用 :session 时在结果中显示 shell 提示符

Emacs:Aquamacs 更新后,自动填充模式的 Alt-q 在 LaTeX 中的数学分隔符处换行

html - 在 Aquamacs 中默认禁用 html-helper-mode 以编辑 HTML

shell - 快速的 emacs shell 模式?

Emacs ediff、外来字符集和文本文件编码