Visual Studio Code - 删除所有空白行 - 正则表达式

169

我花了一些时间试图找出如何在Visual Studio Code中删除所有空白行,但是我无法让它正常工作。有人知道如何做吗?

如果我在搜索字段中输入^$并搜索,VSC会找到空白行(完全是空的行,不包含任何空格),但是当我点击“全部替换”时,它不会删除它们。什么都不做: ^$

对于带有空格的空白行,^\s+$搜索有效,但它不能把它们删除。它会用一个没有空格的空白行进行替换 :)) ^\s+$

肯定是我做错了什么。我只是无法弄清楚是什么错了。有人知道吗?谢谢。


1
我在你关于这个问题打开的评论中添加了一条内容,但对于其他人来说,“$”实际上并不匹配换行符,它匹配一个存在于换行符之前的零宽度标记。要替换换行符,需要使用“\n”,但VS Code目前不支持多行正则表达式匹配(#313)。 - Marie
谢谢玛丽。看起来我们需要等一段时间。 - Joz
5
在正则表达式模式下,查找 ^$\n 并将其替换为空白也可以正常工作。编码愉快! - sajal rajabhoj
简单步骤:https://dev59.com/2FUL5IYBdhLWcg3wopSy#50042582 - Deepu Reghunath
17个回答

252

对于那些可能感兴趣的人 - 在1.3.1版本中适用于我(在1.33.1中仍然适用)删除空行,我使用了ctrl+h(查找和替换)alt+r(使用正则表达式)

在查找框中:

\n\n
在替换框中:
\n

这应该将连续的两个换行符变成一个。

编辑后:

如果您需要一次替换多个空行(超过两个),可以在查找框中使用以下正则表达式:

\n+
如果您需要将空行替换为空格,那么您需要在查找框中使用以下正则表达式:

\n+\s*\n

VS code正在使用JavaScript正则表达式


13
沿着这些线路,我使用^[\r\n]{3,} - RJ Cuthbertson
还要看下面@Dzumret的解决方案。在我的解决方案中,它只删除空行。他的解决方案会删除包含空格字符(空格,制表符)的行。 - suchoss
这个答案并不适用于所有情况,如果您在空白行中有空格会怎么样呢? - dhaker
如果您在空行中有空格或制表符,请将第一个正则表达式更改为:\n\s*\n - AsGoodAsItGets
2
太好了!为了删除超过一个连续空行,我用 \n 替换了 \n+。为了考虑到空格,将 (^\s*\n)+ 替换为 nothing。 - Ilario
显示剩余3条评论

144

同样有效的是这个正则表达式模式:

^\s*$\n

然后按CTRL+Enter替换所有行。

以上模式的解释:

-----------------------------------------------
|  ^ | beginning of string anchor             |
-----------------------------------------------
| \s | any whitespace character               |
-----------------------------------------------
| '*'| zero or more repetitions               |
-----------------------------------------------
|  $ | end of string anchor                   |
-----------------------------------------------
| \n | new line                               |
-----------------------------------------------

1
不确定,但只有这个对我有效,相比其他答案更好。解释得也很清楚。谢谢。 - Sai
1
\n放在锚点之外是对我有效的。然后VSCode允许将其替换为空(空的“替换为”字段)。 - Eric
现在按下 Ctrl+Enter 键会插入换行符,而不是替换全部内容。 - AATHITH RAJENDRAN

50

Visual Studio Code 1.13.0 Linux Lite:

  • 按下CTRL+H
  • 选择“使用正则表达式”
  • 在查找框中输入:^(\s)*$\n(根据需要输入多个结尾的\n
  • 将替换框中的内容设置为空
  • 点击替换全部

空行已经消失!


21

这是我的正则表达式,它可以捕获所有多余的换行符和只包含空格、制表符等内容的空行。

\n\s*\n

我将所有匹配项替换为\n

解释

\n       : New Line
\s*      : Zero or more consecutive white space characters or new lines
\n       : Another New Line

附注:请记得在搜索窗口中选择正则表达式选项!!


13

尝试在VS Code的替换对话框中使用^\s*\n -

看这里


6

不,你做得很对。

我也遇到了相同的情况。

我还尝试了另一个正则表达式:(\r?\n){2,},但似乎它只适用于单行。

也许有一种偏好可以改变默认的正则表达式行为,或者VS只是以这种方式构建的(基于行)。

当然,从另一个文本编辑器中复制和粘贴回来也不是什么大问题。


3
只有在用空格替换了所有的 ^\s*$ 后,我才找到了解决方法,然后我尝试了 (\r?\n){2,} - Mihai Popescu

5

我不知道你们怎么看,但是对我来说,记住太多的命令好像是浪费时间!

使用扩展程序“空行组织者”,以下是描述:

该扩展程序将帮助您通过删除多个空行来组织代码中的空行。该扩展程序仅从所选行(如果有)中删除空行,否则从整个文件中删除。

如何使用:请查看扩展程序的描述,但它似乎非常不错!

blankLine.triggerOnSave boolean true    If set to true, the command will be triggered on save.

换句话说,保存文件后,它会自动清理!

嗨@Jun!我正在使用Sublime Text3,它解决了很多问题,而且更轻便,还有一些不错的功能。 - Marcelo Agimóvel
你在Sublime Text3中使用哪个插件? 我以前用的是Webstorm,它是内置的。 - Jun
Html / CSS / JS Prettify - Marcelo Agimóvel
关于 'blankLine' 的说明 → 请确保将您的语言添加到它将处理的语言 ID 中。例如,添加 "csharp", 来处理 .csharp 文件。 - tyirvine

3
在我的情况下,kobi7的解决方案(\r?\n){2,}只对我起作用, 我必须进行小修改后再次运行它才能使其适用于单行(只需将2改为1)。
^(\r?\n){1,}

3
我在Visual Studio中发现以下方法最有效:

替换: ^\n$ 为: <no value here>

这将找到所有空行并将它们清除。


0

将一个或多个换行符(\n)+替换为\n


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接