如何在EMACS中的给定文本的每一行之后添加两个空格?

时间:2016-08-26 21:50:50

标签: emacs markdown

寻求如何在EMACS中的给定文本缓冲区上的每一行之后添加两个空格。

这是通过org-mode在EMACS导出时添加LINE BREAKS的方法。

1 个答案:

答案 0 :(得分:3)

首先,请确保您(或已安装的某些软件包)尚未在挂钩上添加delete-trailing-whitespace。默认情况下它不在任何钩子上,但将它添加到before-save-hook是相当常见的。

又快又脏:

C-M-< C-M-% $ RET SPACE SPACE RET !

  1. 这将转到缓冲区的开头(C-M-<),
  2. 开始query-replace-regexpC-M-%),
  3. 用两个空格和
  4. 替换行尾($
  5. 将其应用于每场比赛(!)。
  6. 上方,RET表示按返回键,SPACE表示按空格键。将$替换为[^ ][^ ]$,将SPACE SPACE替换为\& SPACE SPACE,以仅处理少于两个空格的行(这也会使操作具有幂等性)。 \&表示整个匹配的字符串(在本例中为最后两个字符)。

    <强>功能:

    (defun ensure-trailing-spaces ()  
      "Ensure there are two spaces at the end of every line."
      (interactive "*")
      (save-excursion
        (goto-char (point-min))
        (while (not (eobp))
          (end-of-line)
          (unless (looking-back "  $")
            (insert "  "))
          (forward-line))))
    

    请注意,这无条件地在每一行的末尾插入两个空格,即使已经有一个空格,因此在每一行的末尾都会有两个或三个空格。