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


133

我花了一些时间试图弄清楚如何删除Visual Studio Code中的所有空白行,但无法正常工作。有人知道怎么做吗?

如果^$在搜索字段中键入内容时进行搜索,VSC会找到空白行(完全空白行,表示没有空格),但是当我单击“全部替换”时,它不会将其删除。它什么都不做: ^ $

对于带空格的空白行,^\s+$搜索有效,但不会删除它们。它的作用是将它们替换为无空格的空行:)) ^ \ s + $

一定是我做错了。我只是不知道这是什么。有人知道吗 谢谢。


1
我对您打开的问题添加了评论,但对于其他人,它$实际上并不与换行符匹配,而是与在换行符之前存在的零宽度标记匹配。要替换新行,您需要使用,\n但是VS Code当前不支持多行正则表达式匹配(#313
Marie

谢谢玛丽。看来我们必须等待一段时间。
jozefk '16

4
在正则表达式模式^ $ \ n中查找并替换为空白也可以正常工作。快乐编码!
sajal rajabhoj

Answers:


194

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

然后在查找框中:

\n\n

在替换框中:

\n

这应该使两个连续的行尾符号变为一个。

编辑:

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

\n+

如果您还需要用空格替换空行,则需要在查找框中使用以下正则表达式:

\n+\s*\n

VS代码正在使用javascript正则表达式


10
遵循这些原则,我使用^[\r\n]{3,}
RJ Cuthbertson

现在正在工作。谢谢:)之间有很多版本的VSC,但是没关系。用\ n替换\ n \ n效果很好。
jozefk

另请参阅下面的@Dzumret解决方案。在我的解决方案中,它仅删除没有任何内容的行。他的解决方案删除行中还有一些空格字符(空格,制表符)的行
这样,

此答案并不适用于所有情况,如果空白行中有空格,该怎么

1
大!要删除多个连续的空行,我将\ n +替换为\ n。要用空格代替(^ \ s * \ n)+,也不要添加任何内容
Ilario

113

此正则表达式模式也有效:

^\s*$\n

然后CTRL+Enter替换所有行。

以上模式的说明:

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

不确定,但是只有这个对我有用,与所有其他答案进行比较。也很好解释。谢谢。
西贡

\n锚放置在外部对于我来说是有用的。VSCode然后允许将其替换为任何内容(空白“替换为”字段)。
埃里克

46

Visual Studio Code 1.13.0 Linux Lite:

  • 命中CTRL+H
  • 选择“使用正则表达式”
  • 查找框:^(\ s)* $ \ n(根据需要输入许多结尾\ n)
  • 替换框:空
  • 点击全部替换

空行不见了!


18

这是我的正则表达式,它捕获所有额外的新行和仅包含空格,制表符等的空行

\n\s*\n

我将所有比赛替换为 \n

说明

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

PS:请记住在搜索窗口中选择正则表达式选项!


13

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

看这里


6

不,您做对了。

我在这里得到相同的行为。

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

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

当然,剪切粘贴并从另一个文本编辑器返回并没什么大不了的。


3
只有在我将所有内容替换^\s*$为空之后,这才对我有所帮助,然后我尝试了(\r?\n){2,}
Mihai Popescu

4

我不了解您,但是为我记住很多命令似乎浪费时间!

使用扩展名“ Blank Line Organizer”,这是说明:

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

用法:检查扩展名的描述,但确实好用!

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

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


嗨@君!我使用Sublime Text3已解决了很多问题,而且更轻巧,并且具有一些不错的功能。
MarceloAgimóvel'18年

您将Sublime Text3与哪个插件配合使用?我用Webstorm,它是内置的。
Jun711

HTML / CSS / JS
Prettify

3

我在Visual Studio中发现以下最适合我的作品:

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

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


3

就我而言 kobi7解决方案(\r?\n){2,}仅对我有用,我不得不稍加修改就再次运行它以使其适用于单行(仅更改为2到1)

^(\r?\n){1,}

0

您只需要做代码女仆扩展。您可以使用快捷键Ctrl M +空格键清理文件,它将删除空行并设置代码格式。您还可以配置有关格式和清除规则。希望这有用。


找不到(在Manjaro Linux上)。
MarceloAgimóvel18年

2
那是因为它是Visual Studio扩展而不是Visual Studio Code扩展。
Rene Juuse



-1

用:“空白”替换:^ \ n $


并删除文档中的每个空白?
愤怒

-4

Windows 10,Visual Studio 2015

Ctrl + H

查找...-> ^ \ s *

全部替换

Ctrl + A

Ctrl + K + F

谢谢您的提问,我学到了一些新知识。


5
Visual Studio 2015不是Visual Studio代码。
罗伯特·考彻
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.