Answers:
找到了,它是:
g/^\s*$/d
简要说明
:g
:[range]g/pattern/cmd
通过对每个行匹配模式执行Ex命令cmd,此操作将作用于指定的[范围](默认整个文件)(Ex命令是一个以冒号开头的命令,例如delete)。在执行cmd之前,将“ ”设置为当前行。
:d
.
:v/./d
要么
:g/^$/d
要么
:%!cat -s
以下内容可用于仅删除多个空白行(将它们减少为单个空白行),并保持单个空白行不变:
:g/^\_$\n\_^$/d
\_$
意味着结束线能够在图案内被使用($
只能在图案的端部被使用。)同样是\_^
该装置的线的开始,并且可以在图案内的任何地方使用。因此,模式匹配一个空行,一个换行符,再匹配一个空行。请参阅Vim regex帮助页面。
:g/^$/,/./-j
如何删除所有空白行
:%s,\n\n,^M,g
(多次执行所有空行都消失了)
如何删除所有空白行而使单个空行
:%s,\n\n\n,^M^M,g
(多次执行)
如何删除所有空白行,并保留两个空行(最大),
:%s,\n\n\n\n,^M^M^M,g
(多次执行)
为了输入^ M,我必须在Windows中输入control-Q和control-M
\r
代替Ctrl-M
。
怎么样:
:g/^[ \t]*$/d
我尝试了此页面上的一些答案,但其中许多对我而言不起作用。也许是因为我在Windows 7上使用Vim(不要嘲笑,只可怜我:p)?
这是我发现可在Windows 7中的Vim上使用的最简单的工具:
:v/\S/d
这是Vim Wikia上的更长答案:http : //vim.wikia.com/wiki/Remove_unwanted_empty_lines
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line
糊
:command -range=% DBL :<line1>,<line2>g/^\s*$/d
在您的.vimrc中,然后重新启动您的vim。如果使用命令:5,12DBL,它将删除第5行和第12行之间的所有空白行。我认为我的答案是最好的答案!