崇高文字2:如何删除空白行/空行


271

假设我有一个包含以下九行的文本文件:

foo

bar

baz

qux

quux

如何使用Sublime Text 2删除所有四行空白/空行,仅保留五行?

Answers:


658

选择文字

按:

  • Ctrl+ H在PC上,或
  • Command在Mac上为+ Alt+ F
  • 单击查找->替换。

请确保您已选择“正则表达式”,方法是按:

  • Alt+ R在PC上或
  • Command在Mac上为+ Alt+ R
  • 单击.*查找框。

找什么: ^\n

替换为:(无,保留空白)。


3
可行,谢谢!有没有一种方法可以将查找/替换绑定到键盘快捷键,或者以某种方式保存它以便快速访问?我在Google上搜索了一下,却找不到任何东西
Nick

46
小建议可^(\r|\n\r?)用于覆盖所有可能的换行符。
哈里斯·克拉吉纳

5
对我来说(Sublime Text 2)快捷方式是(Alt + Cmd + F),然后按Hugp Corra的描述
Maxence

24
查找所有空行(包括带有空格的空行)的更好方法是: ^[\s]*?[\n\r]+
箱2014年

5
@Crate不需要?,因为a *也匹配零次出现,并且\s*在例如在linux环境中编辑Windows文本时将匹配额外的'\ r',所以^\s*$技巧也是如此。
drevicko

67

当行中没有空格时,Hugo答案中的regexp是正确的。如果有空间正则表达式可以^\s+$


32
假定存在空白。而且,它实际上无法完全替代行。试试吧^[\s]*?[\n\r]+。我已经测试过了,而且效果很好。
板条箱2014年

24

也有一些ST2 / ST3插件可用于此类任务。我喜欢这两个:

第一种方法有两种删除空行/不必要行的方法。其中一个人称Delete Surplus Blank Lines这很酷。它只删除那些后面跟着另一个空行的行


10

查找/替换解决方案:

正则表达式查找:\s+

替换为: //单个空格


3
实际上,这是:$ \ s +
kris

8

甚至不知道整个过程如何工作,但是我尝试了 ^\s*$但没有工作(仍然留有空白行)。

相反^\s*,这对我有效

{崇高文字3}


7

我不得不使用:

将\ n ^ \ s * \ n替换为\ n

https://github.com/NicholasBuse/sublime_DeleteBlankLines插件都什么也没做。


2
确保选择要影响的区域,然后使用相应的快捷键 WindowsCtrl + Alt + Backspace(删除空白行)Ctrl + Alt + Shift + Backspace(删除多余的空白行) OSXCtrl + Alt + Delete(删除空白行)Ctrl + Alt + Shift +删除(删除空白行) LinuxCtrl + Alt + Backspace(删除空白行)Ctrl + Alt + Shift + Backspace(删除多余的空白行)
Xtremefaith 2014年

5

崇高文字2和3

@crates的评论对我有用,

第1步:只需按ctrl+H

步骤2:按RegEX键

步骤3:在“查找”中编写: ^[\s]*?[\n\r]+

步骤4:全部替换



3

您正在寻找这个:

^\n|^\s+$

如果前面有空格或制表符的内容,则不会删除该行

例如:

这些将不会被删除:...空格... abc

...标签... abc

这将:

...空间...其他...

标签...别的...


3

使用多项选择:选择一对换行符,然后反复使用“快速查找全部”(Alt+ F3)或“快速添加下一个(Ctrl+ D)”将其全部选中;然后点击Enter以换行代替它们。


1
在大型文档中,我发现这会使Sublime崩溃。
Thalecress

3

他们是不使用正则表达式的更简单方法。您只需要选择整个文本即可。然后转到:编辑->置换线->唯一。

就这样。并且所有空白行将被删除。


这将删除所有非唯一行。不只是空白。因此,假设您的HTML中有很多行是一个单独的</ div>,它将删除除第一行以外的所有行。或在代码中,它将删除您所有的结束}。仅删除空白行,了解其作用是不可靠的。
伊万·麦卡

2

另一种方法,您可以使用cc.dblConyEdit(插件)的命令行删除空白行或空白行。


1

还有“联接线”。如果在OSX上,选择所有文本,然后按几次CMD-J,它将按行折叠您的选择,删除换行符。

编辑:这种方法将使您将所有内容都放在一行上,这不是您要的。


2
我看到了你要去的地方..这个建议导致将所有内容拖到一行,但是一个宏可以使它工作:(OSX键)ctrl-q(记录宏),cmd-j(连接行)down arrowctrl-q(结束宏) 。然后shift-ctrl-q根据需要重复执行...
ptim



0

在我的情况下,一些空行包含Unicode字符零宽度空间(U + 200b)。要清除空行,包括具有此unicode字符的行:

\s\x{200b}|^\s

0

使用查找/替换,尝试将选择内容粘贴到空白行上方的行末,并在空白行之后的行末结束。这适用于单个空白行。您也可以为多个空白行重复该过程。 CTRL- H,通过复制/粘贴或其他方法将您的选择放在查找框中,并将单个换行符放在替换框中。



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.