2012-07-29 73 views
10

我将一个长google电子表格的粘贴单元格复制到一个txt文件中,该文件是用逗号分隔的电子邮件地址列表。还有许多“空白”单元,即由逗号包围的空白区域。所以我可以有以下列表:在vim搜索和替换中,换行符呈现为“^ @”

[email protected], ,[email protected], , , , [email protected]

在vim中,当我尝试用一​​种新的符合这个命令添加单独的每个地址:

:%s/, /,\n/g 

,而不是添加一个新的行之后的comman,我得到“^ @”。

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

回答

13

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

^@是ASCII空字符。 Vim在内部使用\ r作为换行符(这是^ M),\ n对于ASCII null,所以在替换中,如果使用\ n,您将获得空字符而不是换行符。另见:h sub-replace-special

+0

你能解释为什么他的'\ n'显示为'^ @'? – 2012-07-29 07:46:53

+4

'^ @'是ASCII空字符。 Vim在内部使用'\ r'作为换行符(这是'^ M'),'\ n'用于ASCII空,因此在替换中,如果使用'\ n',那么您将得到那些空字符而不是换行符。另见':h sub-replace-special'。 – Julian 2012-07-29 07:51:06

+0

@ Julian:我相信你应该在答案中解释这个问题。 – 2012-07-29 08:21:19