如何在Atom中替换换行符?

57
在Atom中,如果我在搜索和替换工具上启用正则表达式模式,它可以将换行符识别为\n,但是当我尝试替换它们时,它们仍然存在。
在Atom中有没有办法替换跨越换行符的字符串?

如果您在右侧使用“.*”按钮打开正则表达式模式,则可以将“\n”作为替换字符串输入以替换逗号。 - PsychoScripter
8个回答

53

看起来Atom将换行符匹配为 \r\n,但在仅替换 \n 时表现不一致。

因此,换行符似乎与 \s+\r\n 匹配,只有“半个”行尾匹配 \n

  • 如果您用一个字符串替换 \n,则行尾不会发生任何变化,但该字符串会添加到下一行。
  • 如果您用一个字符串替换 \r,则根本不会发生任何变化,但光标会前进。

你确定这是Atom正则表达式引擎的问题,而不是文件包含不同的行结尾(而Atom没有将差异可视化)? - axic
不关心问题是否在“Atom正则表达式引擎”中。查找和替换的行为方式很奇怪,令人惊讶。 - djsadinoff
1
你没有回答我的评论的第二部分 - 是否是实际的错误还是没有视觉反馈?你的回答并没有完全清楚使用的实际表达式 - 你是否尝试过 "\r?\n$" ?或者先将所有的 \r 替换为 \n,然后再使用 "\r\n?$"? - axic
3
作为用户,我不敢说这是一个bug。但在我的看法中,它确实是不一致而且令人惊讶的。Atom开发者可以把这种奇怪的行为定义为“按规定工作”,但无论Atom的内部模型如何(或特定文件的换行模式是什么),对我而言,以上行为都会被视为奇怪的行为,因为实际上并没有文件内容支持它的表现方式。 - djsadinoff

46

有点晚了,但我使用以下术语进行搜索,并且在 Atom v1.19.7 x64 上有效。

\r?\n|\r

6
为什么回答已经太晚了? - caduceus
这对我来说是在Atom 1.28.2中最简单的方法。 - JCrooks
这是个节省时间的好工具,谢谢!- Atom 1.60.0 - fpenim

12

这些答案都没能帮到我。

  1. 我只是在文件末尾添加了一个新行。
  2. Shift + <-(左箭头)
  3. Ctrl + C
  4. 在“替换当前缓冲区”一行中使用Ctrl + V

只需复制新行并粘贴即可 :D


6
使用ATOM删除代码中的不可见换行符
- 使用“在缓冲区中查找”功能,在Atom编辑器中打开您的代码文件。 - 按下键盘上的cmd(mac)/ctrl(win) + f,以激活在缓冲区中查找功能(一个小窗口出现在Atom屏幕底部边缘)。 - 选择您想要删除不可见换行符的代码。 - 点击标记模式按钮,然后点击正则表达式模式(*)按钮,并在第一个字段中输入:\n。 - 然后单击全部替换。 - Atom将删除所有由\n表示的不可见换行符(如果您使用LF模式右下角,则对于CRLF模式(在Windows机器上非常常见)请使用\r\n),并用空白替换它们。
希望这有所帮助。
Synaikido

如果在Atom的后续版本中有一个标记按钮,那么它似乎已经消失了。 - Eamon Bohan

3
您可以使用回溯引用:
例如,将三个空白行替换为一个空白行
查找正则表达式:(\r\n){3}
替换为:$1
您可以用(\r\n){2}表示双空白行,或用(\r\n){n}表示任意数量的空白行。您还可以省略$1并将替换留空以完全删除空白行。
如果您想用两个空白行替换三个空白行,则替换字符串可以是$1$1或$1$2(甚至可以是$1$3 ... $3$3 ... $3$2 ...):$1只是指向第一个括号表达式\r\n;$2指向第二个(与第一个相同,因此$1$1与$1$2相同,因为$1 == $2)。这个通用于n个空白行。

我认为OP试图替换跨越多行的字符串,而不是空行。 - TriskalJM
这很棒,但真正的诀窍是使用\r\n,这让我感到惊讶。谢谢! - djsadinoff

2

纯粹主义者可能不会喜欢我的解决方案,但您也可以通过将具有多个换行符的内容复制并粘贴到查找/替换输入中来将其转换为多行文本框。无论是否使用正则表达式,它都可以工作。

例如,您可以复制这3行并将它们粘贴到查找和替换输入中:

line 1
line 2
line 3

现在您的输入已经有了所需的行数,您可以根据需要进行修改(如果需要,可以添加正则表达式)。


1

嘿,很奇怪,Ctrl+Shift+F也不起作用!

解决方法:打开Atom设置,然后选择核心包->行结束选择器,在底部滚动查看有关转换行结尾的命令的提示:“convert-to-LF”。

要进行转换:Cmd+Shift+P键入“line”,然后选择“convert-to-LF”-完成!

您可以将默认选项“默认行结尾”从“OS”更改为“LF”。

此外,在设置更改后,您的新文件将使用“LF”。


0

先决条件:激活“使用正则表达式”

在我的Atom版本(Linux,1.51.0)中,我使用以下代码在新行后添加“export”:

search '\n'
replace '\nexport '

运行得非常好

\r\n没有匹配任何内容


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