我试图用新行替换当前文件中的每一行:

:%s/,/\n/g 

但它插入了一个类似于^@的内容,而不是实际的换行符。该文件未处于DOS模式或任何状态。

我该怎么办?

如果您像我一样好奇,请检查问题:为什么\r是Vim的新线?也


当前回答

但如果必须替换,则以下方法有效:

:%s/\n/\r\|\-\r/g

在上文中,每一行都被替换为下一行,然后是|-,然后是一行。这在wiki表中使用。

如果文本如下:

line1
line2
line3

更改为

line1
|-
line2
|-
line3

其他回答

诀窍如下:

首先,将Vi(m)会话设置为允许使用特殊字符(例如:换行符)进行模式匹配。在.vimrc或.exrc文件中放入这行代码可能是值得的:

:set magic

接下来,请执行以下操作:

:s/,/,^M/g

要获取^M字符,请键入Ctrl+V并按Enter键。在Windows下,按Ctrl+Q,Enter键。我能记住这些的唯一方法就是记住它们的意义有多小:

A: 用来表示换行符的最差控制字符是什么?B: 要么是q(因为它通常意味着“退出”),要么是v,因为很容易错误地键入Ctrl+C并杀死编辑器。A: 做到这一点。

在vim编辑器中,以下命令成功替换为新行

:%s/\\n/\r/g

这是对我有用的答案

----引用使用vi编辑器在替换中插入换行符


还有一些事情我必须做,但我记不住了,然后不得不抬头看。

在vi中,要在搜索和替换中插入换行符,请执行以下操作:

:%s/look_for/replace_with^M/g

上面的命令会将“look_for”的所有实例替换为“replace_with\n”(\n表示换行)。

要获得“^M”,请输入组合键Ctrl+V,然后(释放所有键)按enter键。


您需要使用:

:%s/,/^M/g

要获取^M字符,请按Ctrl+v,然后按Enter键。

如果您需要对整个文件执行此操作,我还建议您可以从命令行尝试:

sed 's/\\n/\n/g' file > newfile