vim 里面使用正则表达式,替换成 \n 的时候,确成了 ^@
这个跟vim内部的编码有关。
要想使用正常,只能是
:set ff=unix
:%s/\n/\r/g
这样是正常的。
下面这段内容为摘抄。 若想知道原因请仔细翻阅下面的内容
------------------------------------------------------------------------------------------------------------------------------------------
windows/dos unix mac
换行符 CRLF LF CR
在SHELL中的表示 \r\n \n \r
16进制符 0d0a 0a 0d
:%s/\r/\r/g 这个命令中,第一个\r与第二个\r的意义是可能不相同的; 第一个\r代表 0d ,也就是CR; 而第二个\r,是VIM自行根据fileformat内置变量判断决定的,见下表:
\n \r
:set ff=dos 00 0d0a(\n\r)
:set ff=unix 00 0a(\n)
:set ff=mac 00 0d(\r)
OK,现在就可以解释上面的 :%s/\r/\r/g 为什么会把 0d变成0a了。
另外还有两个小Tip:
根据fileformat的不同,vim会自动在文件的最未尾添加一个换行符,除非启动时vim -b xxx , 同时还要开启 set noeol才行。
任何情形下,VIM中的\n都是00, 在VIM中会显示为@