在vim搜索和替换中,换行符呈现为“^ @”

时间:2012-07-29 07:42:21

标签: vim utf-8 character-encoding

我将长google电子表格的粘贴单元格复制到txt文件中,该文件是用逗号分隔的电子邮件地址列表。还有许多“空白”单元,即用逗号包围的空白区域。所以我可以有以下列表:

bob@aol.com, ,john@aol.com, , , , email@email.com

在vim中,当我尝试使用此命令用新行添加单独的每个地址时:

:%s/, /,\n/g

而不是在comman之后添加一个新行,而是改为“^ @”。

我知道这与字符集有关,但我不知道如何修复它。

1 个答案:

答案 0 :(得分:15)

:s的替换字段中,您需要使用\r而非\n作为换行符。

^ @是ASCII空字符。 Vim内部使用\ r表示换行符(即^ M),\ n表示ASCII null,因此在替换时,如果你使用\ n,你将得到那些空字符而不是换行符。另见:h sub-replace-special