【发布时间】:2010-10-16 21:43:15
【问题描述】:
我可以运行什么命令来删除 Vim 中的空白行?
【问题讨论】:
我可以运行什么命令来删除 Vim 中的空白行?
【问题讨论】:
:g/^$/d
:g 将在匹配正则表达式的行上执行命令。正则表达式为“空白行”,命令为:d(删除)
【讨论】:
:%!cat -s 可能是选择..
1,$/^\s$/d 或使用标签'a,'b/^\s$/d 怎么样?这对我不起作用
1,$g/^$/d
找到了,是:
g/^\s*$/d
简述
:g:[range]g/pattern/cmd这作用于指定的[范围](默认整个文件),通过对匹配pattern的每一行执行Ex命令cmd( Ex 命令是以冒号开头的命令,例如
:d用于删除)。在执行cmd之前,“.”被设置为当前行。
【讨论】:
:v/./d
或
:g/^$/d
或
:%!cat -s
【讨论】:
以下可用于仅删除多个空行(将它们减少为单个空行)并保持单个空行不变:
:g/^\_$\n\_^$/d
【讨论】:
\_$ 表示可以在模式内部使用的行尾($ 只能在模式的末尾使用。)同样是\_^ 表示行首,可以在模式内的任何地方使用。因此,该模式匹配一个空行、一个换行符和一个空行。见Vim regex help page。
:g/^$/,/./-j
如何删除所有的空白行
:%s,\n\n,^M,g
(多次执行此操作,直到所有空行都消失)
如何删除所有空白行留下 SINGLE 空行
:%s,\n\n\n,^M^M,g
(重复多次)
如何删除所有空白行,最多留下两个空行,
:%s,\n\n\n\n,^M^M^M,g
(重复多次)
为了输入^M,我必须在windows中控制-Q和控制-M
【讨论】:
\r 代替Ctrl-M。
怎么样:
:g/^[ \t]*$/d
【讨论】:
这对我有用
:%s/^\s*$\n//gc
【讨论】:
:%s/^\n//gc
在 vim 中使用 perl:
:%!perl -pi -e s/^\s*$//g
【讨论】:
chomp 不也能胜任吗?
这个函数只删除两个或多个空行,把下面的行放在你的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>
【讨论】:
我尝试了此页面上的一些答案,但其中很多对我不起作用。也许是因为我在 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 行之间的所有空白行。 我认为我的答案是最好的答案!
【讨论】:
如果您的文本有双倍行距,则此命令将删除双倍行距并将预先存在的重复空行合并为一个空行。它在行首使用 ^^^ 的临时分隔符,因此如果这与您的内容冲突,请选择其他内容。仅包含空格的行被视为空白。
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
【讨论】:
这对我有用:
:%s/^[^a-zA-Z0-9]$\n//ig
它基本上删除了所有没有数字或字母的行。由于我列表中的所有项目都有字母,因此它删除了所有空白行。
【讨论】:
在插入模式下按delete键删除空白行。
【讨论】: