寻求如何在EMACS中的给定文本缓冲区上的每一行之后添加两个空格。
这是通过org-mode在EMACS导出时添加LINE BREAKS的方法。
答案 0 :(得分:3)
首先,请确保您(或已安装的某些软件包)尚未在挂钩上添加delete-trailing-whitespace
。默认情况下它不在任何钩子上,但将它添加到before-save-hook
是相当常见的。
又快又脏:
C-M-< C-M-% $ RET SPACE SPACE RET !
。
C-M-<
),query-replace-regexp
(C-M-%
),$
)
!
)。上方,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))))
请注意,这无条件地在每一行的末尾插入两个空格,即使已经有一个空格,因此在每一行的末尾都会有两个或三个空格。