我应该在Vim中运行什么命令来删除空行?
:g/^$/d
:g
命令将在匹配正则表达式的行上执行一个命令。该正则表达式是“空白行”,命令是:d
(删除)
找到了,它是:
g/^\s*$/d
:g
的简要解释
:[range]g/pattern/cmd
这将针对指定的[范围](默认为整个文件),通过执行Ex命令cmd来处理每一行匹配的pattern(Ex命令以冒号开头,例如:d
表示删除)。在执行cmd之前,“.
”会被设置为当前行。
:v/./d
或者
:g/^$/d
或者:%!cat -s
:g/^\_$\n\_^$/d
\_$
表示匹配模式内的行末位置($
只能用于模式的末尾),\_^
表示匹配模式内的行首位置,可以在模式的任何位置使用。因此,该模式可以匹配空行、换行和再次空行。请参阅Vim regex help page。 - Wiktor Stribiżew:g/^$/,/./-j
。 - SergioAraujo如何删除所有空白行。
:%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
。 - dash-tom-bang这对我很有用
:%s/^\s*$\n//gc
:%s/^\n//gc
- Clint Pachl:g/^[ \t]*$/d
在插入模式下按下delete键可删除空行。
这个函数只会删除两行或更多的空白行,将以下代码添加到你的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
1,$/^\s$/d
或使用标签'a,'b/^\s$/d
怎么样?这对我不起作用。 - Alexander Cska1,$g/^$/d
。 - brownian