Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim删除空行_Vim_Vi - Fatal编程技术网

Vim删除空行

Vim删除空行,vim,vi,Vim,Vi,我可以运行什么命令来删除Vim中的空行?找到它,它是: g/^\s*$/d 资料来源: :g :[range]g/pattern/cmd 通过对每个行匹配模式执行Ex命令cmd(Ex命令是一个以冒号开头的命令,例如用于删除的:d),该命令作用于指定的[range](默认整个文件)。在执行cmd之前,“”设置为当前行 :g将在与正则表达式匹配的行上执行命令。正则表达式为“空行”,命令为:d(删除) 或 或 :%!cat -s 那么: :g/^[ \t]*$/d 以下内容可用于仅删除多个空行

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

找到它,它是:

g/^\s*$/d
资料来源:

:g

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

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

:%!cat -s
那么:

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

以下内容可用于仅删除多个空行(将其减少为一个空行)并保留单个空行不变:

:g/^\_$\n\_^$/d
在vim中使用perl:


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

此函数仅删除两行或多行空行,将下面的行放入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>
有趣!德尔布兰克()
让我们=@/
设l=直线(“.”)
设c=col(“.”)
:g/^\n\{2,}/d
让我们
调用游标(l,c)
结束
映射d:keepjumps调用DelBlank()
  • 如何删除所有空白行

    :%s,\n\n,^M,g
    
    (在所有空行消失之前多次执行此操作)

  • 如何删除留下一条空行的所有空白行

    :%s,\n\n\n,^M^M,g
    
    (多次执行此操作)

  • 如何删除所有空白行,最多留下两条空行

    :%s,\n\n\n\n,^M^M^M,g
    
    (多次执行此操作)

  • 为了输入^M,我必须在windows中控制-Q和-M这对我来说很有用:

    :%s/^[^a-zA-Z0-9]$\n//ig
    
    它基本上删除了所有没有数字或字母的行。因为我的列表中所有的项目都有字母,所以它删除了所有的空白行。

    < P>这对我来说是有效的。
    :%s/^\s*$\n//gc

    我在这页上尝试了一些答案,但其中很多都不适用于我。也许是因为我在Windows7上使用Vim(不要嘲笑,可怜我吧:p)

    下面是我发现的最简单的一个可以在Windows 7中的Vim上运行:

    :v/\S/d
    
    在Vim Wikia上有一个较长的答案:

    粘贴

    :命令-范围=%DBL:,g/^\s*$/d
    
    在.vimrc中,然后重新启动vim。 如果使用命令:5,12DBL 它将删除第5行和第12行之间的所有空行。
    我认为我的答案是最好的答案

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

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


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

    Nice。但不完全是空行。啊,是的,这将匹配只包含空格字符的行。我会接受索尔梅奇的回答。那应该匹配空行和只由空格组成的行。。。(*匹配零个或多个\s…)?我认为纯空白完全是一个空行,而没有空白更像是一个空行,你不这么认为吗?;)牛津大学说空白是“文档中留下的空白”。你可以这样解释,但这正是我想要的。谢谢使用:v//d(更容易键入)的巧妙技巧,但之后需要执行:nohl。@ClaesMogren或仅在控件上反弹-l@zladuric根据它的反向全局(所以它对所有不匹配的东西都执行命令)感谢soulmerge。这是我最喜欢的答案,因为它实际上解释了:g命令的作用。这将删除所有空行(不包含任何空格字符…),但这可能不是唯一的要求。有人可能仍然保留一条空行<代码>:%!cat-s可能是一个选项..:g/^\s*$/d,在line@soulmerge如何添加范围
    1,$/^\s$/d
    或使用标记
    'a,'b/^\s$/d
    ?这对我不起作用。你也可以用
    \r
    代替
    Ctrl-M
    。有人能解释一下代币的意思吗?(那么,它是如何工作的呢?)谢谢。
    \\\\\\\\$
    表示可以在模式中使用的行尾(
    $
    只能在模式的末尾使用。)
    \\\\\\^
    也一样,表示行尾,可以在模式中的任何位置使用。因此,模式匹配一个空行、一个换行符和一个空行。请参阅。另一种方法:
    :g/^$/,/./-j
    在发布答案时,请添加并解释您更改或添加的内容或其工作原理或其他内容。尽管你的答案可能是解决方案,但很可能一些读过这篇文章的人不理解它的含义或工作原理。请用英语说,这在这里并不重要。这个问题在5年前接受了一个答案。我认为索尔默的答案:g/^$/d不是最好的答案。我编辑了他的答案:g/^\s*$/d。但是为什么我不能在“显示此姿势的所有编辑”中观看我的编辑?我的答案比他的答案好,谁拒绝了我的答案以及我的答案被拒绝的原因?我的perl可能有点生锈,但chomp不会也起作用吗?我使用类似的东西:
    :%s/^\n//gc
    :%s/^[^a-zA-Z0-9]$\n//ig
    
    :v/\S/d
    
    :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
    
    %s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*