Vim删除空白行

时间:2009-04-01 15:34:13

标签: vim vi

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

14 个答案:

答案 0 :(得分:1175)

:g/^$/d

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

答案 1 :(得分:173)

找到它,它是:

g/^\s*$/d

来源:Power of g at vim wikia

答案 2 :(得分:49)

:v/./d

:g/^$/d

:%!cat -s

答案 3 :(得分:42)

以下内容可用于仅删除多个空行(将它们缩小为一个空白行)并保留单个空白行:

:g/^\_$\n\_^$/d

答案 4 :(得分:13)

  1. 如何删除所有空白行

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

    (多次使用,所有空行都消失了)

  2. 如何删除离开SINGLE空行的所有空白行

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

    (多次这样做)

  3. 如何删除所有空行,留下两行空行AT MAXIMUM,

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

    (多次这样做)

  4. 为了输入^ M,我必须在Windows中控制-Q和control-M

答案 5 :(得分:6)

怎么样:

:g/^[ \t]*$/d

答案 6 :(得分:5)

在vim中使用perl:

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

答案 7 :(得分: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>

答案 8 :(得分:5)

这对我有用

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

答案 9 :(得分:4)

我在这个页面上尝试了一些答案,但其中很多都不适合我。也许是因为我在Windows 7上使用Vim(不要嘲笑,只是对我很遗憾:p)?

这是我发现在Windows 7中适用于Vim的最简单的一个:

:v/\S/d

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

答案 10 :(得分:3)

: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行之间的所有空行。 我想我的答案是最好的答案!

答案 11 :(得分:3)

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

答案 12 :(得分:2)

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

%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*

答案 13 :(得分:1)

这对我有用:

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

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