我将一个长谷歌电子表格的单元格复制到了一个文本文件中,该文件是由逗号分隔的电子邮件地址列表。同时,其中也有很多“空”单元格,即被逗号围绕的空格。因此,我可能会得到以下列表:
bob@aol.com, ,john@aol.com, , , , email@email.com
在vim中,当我使用如下命令尝试通过每行一个地址来分隔它们时:
:%s/, /,\n/g
我在逗号后面添加新行时,得到的是"^@"而不是新行。
我知道这与字符集有关,但我不知道该如何修复它。
我将一个长谷歌电子表格的单元格复制到了一个文本文件中,该文件是由逗号分隔的电子邮件地址列表。同时,其中也有很多“空”单元格,即被逗号围绕的空格。因此,我可能会得到以下列表:
bob@aol.com, ,john@aol.com, , , , email@email.com
在vim中,当我使用如下命令尝试通过每行一个地址来分隔它们时:
:%s/, /,\n/g
我在逗号后面添加新行时,得到的是"^@"而不是新行。
我知道这与字符集有关,但我不知道该如何修复它。
:s
的替换字段中,你需要使用 \r
而不是 \n
来表示换行符。
\n
会显示为^@
吗? - Anirudh Ramanathan^@
是ASCII的空字符。Vim内部使用\r
代表新行(也就是^M
),而使用\n
代表ASCII的空字符。所以在替换文本中,如果你使用\n
,你会得到空字符而不是新行。请参考:h sub-replace-special
。 - Julian\n
、\r\n
或\r
)。\r
字符代表它自己,但是在替换字符串中两个\r
字符代表换行符。\n
表示 NULL 是正确的,甚至有:h NL-used-for-Nul
。 - ZyX