2023-05-29 05:00:04

Vim删除空行

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


当前回答

:g/^$/d

:g将在匹配正则表达式的行上执行命令。正则表达式是'blank line',命令是:d (delete)

其他回答

我尝试了这一页上的一些答案,但很多都不适合我。也许是因为我在Windows 7上使用Vim(别嘲笑我,可怜可怜我吧:p)?

下面是我在Windows 7的Vim上找到的最简单的方法:

:v/\S/d

在Vim Wikia上有一个更长的答案:http://vim.wikia.com/wiki/Remove_unwanted_empty_lines

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

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

该函数只删除两个或多个空行,将下面的行放入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>

这对我很有用

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

在vim中使用perl:

这是正确的道路。Perl -pi -e s/^\s*$//g