708

我可以运行什么命令来删除 Vim 中的空行?

4

14 回答 14

1309
:g/^$/d

:g将在匹配正则表达式的行上执行命令。正则表达式是“空白行”,命令是:d(删除)

于 2009-04-01T15:36:32.220 回答
195

找到了,是:

g/^\s*$/d

资料来源:vim wikia上g的力量

简要说明:g

:[range]g/pattern/cmd

这作用于指定的[范围](默认整个文件),通过为每个行匹配模式执行 Ex 命令cmd(Ex 命令是以冒号开头的命令,例如删除)。在执行cmd之前,“ ”被设置为当前行。:d.

于 2009-04-01T15:35:46.590 回答
55
:v/./d

或者

:g/^$/d

或者

:%!cat -s
于 2009-04-01T15:36:42.250 回答
46

以下可用于仅删除多个空行(将它们减少为单个空行)并保持单个空行完整:

:g/^\_$\n\_^$/d
于 2009-04-07T14:52:09.697 回答
15
  1. 如何删除所有的空白行

    :%s,\n\n,^M,g
    

    (多次执行此操作,直到所有空行都消失了)

  2. 如何删除所有空白行留下 SINGLE 空行

    :%s,\n\n\n,^M^M,g
    

    (多次这样做)

  3. 如何删除所有空白行,最多留下两个空行,

    :%s,\n\n\n\n,^M^M^M,g
    

    (多次这样做)

为了输入^M,我必须在windows中控制-Q和控制-M

于 2012-10-26T07:12:54.980 回答
6

怎么样:

:g/^[ \t]*$/d
于 2009-04-01T15:38:21.000 回答
6

这对我有用

:%s/^\s*$\n//gc

于 2014-02-28T16:34:08.283 回答
5

在 vim 中使用 perl:

:%!perl -pi -e s/^\s*$//g

于 2012-05-01T13:17:18.503 回答
5

这个函数只删除两个或多个空行,把下面的行放在你的vimrc中,然后用\d调用函数

fun! DelBlank()
   let _s=@/
   let l = line(".")
   let c = col(".")
   :g/^\n\{2,}/d
   let @/=_s
   call cursor(l, c)
endfun
map <special> <leader>d :keepjumps call DelBlank()<cr>
于 2012-05-01T20:10:55.710 回答
4

我在此页面上尝试了一些答案,但其中很多对我不起作用。也许是因为我在 Windows 7 上使用 Vim(不要嘲笑,只是可怜我 :p)?

这是我发现在 Windows 7 中的 Vim 上工作的最简单的一个:

:v/\S/d

这是关于 Vim Wikia 的更长答案:http: //vim.wikia.com/wiki/Remove_unwanted_empty_lines

于 2014-04-07T16:26:14.210 回答
4
: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 行之间的所有空白行。我认为我的答案是最好的答案!

于 2014-04-30T06:56:19.700 回答
2

如果某些内容对您的文本进行了双倍行距,则此命令将删除双倍行距并将预先存在的重复空行合并为一个空行。它在行首使用 ^^^ 的临时分隔符,因此如果这与您的内容冲突,请选择其他内容。仅包含空格的行被视为空白。

%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
于 2014-08-01T06:48:33.080 回答
2

在插入模式下按delete键删除空行。

于 2017-08-17T09:26:28.260 回答
1

这对我有用:

:%s/^[^a-zA-Z0-9]$\n//ig

它基本上删除了所有没有数字或字母的行。由于我列表中的所有项目都有字母,因此它删除了所有空白行。

于 2014-01-03T23:32:33.763 回答