删除emacs中的额外空白行

时间:2010-12-11 23:30:16

标签: regex emacs

M-x flush-lines ^$ 

删除缓冲区中的所有空行。但是我只想删除多余的空白行,即如果有n个连续的空行我要删除n-1并保留一行。

我知道delete-blank-lines可以完成这一点下空行的工作,但是我想要一个适用于整个缓冲区的简单解决方案。

任何想法如何做到这一点?特别是可以修改我的第一个例子中的正则表达式^ $以仅匹配额外的行吗?

3 个答案:

答案 0 :(得分:20)

C-x h M-x replace-regexp RET ^ C-q C-j C-q C-j + RET C-q C-j RET

标记整个缓冲区并用一个空行替换两个或多个空行。

答案 1 :(得分:5)

我不知道内置函数,但你可以这样做:

仅限M-x单行

(defun single-lines-only ()
  "replace multiple blank lines with a single one"
  (interactive)
  (goto-char (point-min))
  (while (re-search-forward "\\(^\\s-*$\\)\n" nil t)
    (replace-match "\n")
    (forward-char 1)))

答案 2 :(得分:5)

C-x C-o (删除空白行)正是如此。你只需要一点宏魔法就可以在整个缓冲区上运行它。