M-x flush-lines ^$
删除缓冲区中的所有空行。但是我只想删除多余的空白行,即如果有n个连续的空行我要删除n-1并保留一行。
我知道delete-blank-lines可以完成这一点下空行的工作,但是我想要一个适用于整个缓冲区的简单解决方案。
任何想法如何做到这一点?特别是可以修改我的第一个例子中的正则表达式^ $以仅匹配额外的行吗?
答案 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 (删除空白行)正是如此。你只需要一点宏魔法就可以在整个缓冲区上运行它。