如何使用Emacs删除文件中的空行?

5
在Emacs中,如何删除文件中的所有空行(包括制表符和空格)? M-x replace-regexp 可以完成这个任务吗?
我可以使用正则表达式 ^ [st] * $ 找到空行,但不知道如何用删除替换它。
2个回答

12

M-x flush-lines RET ^[[:space:]]*$ RET 可能是实现这个功能的规范方法。


1
这更加优雅。谢谢! - herbertD
7
单凭 M-x flush-lines RET ^$ RET 就可以删除空行。 - Prasanna
2
@Prasanna:这取决于你是否认为只包含几个空格的行是“空行”。 - Stefan

8

^$只匹配行的开头和结尾,而不是实际的行结束符。您需要在表达式中显式输入换行符以替换它。

要实现您的目标,请使用replace-regexp。

^[[:space:]]*^J

当输入空文本时,可以使用^J来表示换行。要输入^J,先按下Control和Q键,然后再按下Control和J键。在输入框中,这将显示为实际的换行符。


2
谢谢关于^J的提示,我使用了M-x replace-regexp ^C-q C-j <Enter> <Enter>来解决这个问题。 - herbertD
你的方法已经删除了所有换行符,我只想删除空行。 - herbertD
1
真的,一开始忘了加上 ^(现在已经编辑过了)。为了匹配你原来的规范“包括制表符和空格”,你确实需要 [[:space:]]* 这部分。 - jlahd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接