vim 在 fileformat 是 unix 的情况下,总是以 \n 结尾,这是 vim 自身实现的。即使执行 %s/\n/\r/g 命令,保存文件后,用 hexdump 查看这个文件的二进制内容,里面存的还是 \n,不是 \r。\n 对应的 ASCII 十六进制值是 0x0a,\r 对应的 ASCII 十六进制值是 0x0d。可以对照查看。 如果只是想把行末的 \n 换成 \r,可以执行 :set fileformat=mac 命令,mac 格式文件默认以 \r 结尾。执行该命令后,保存文件,再用 hexdump 查看,就能看到 \r 对应的十六进制值 0x0d。 执行 %s/\n/\r/g 命令后,多加一行空格,其实是多加了一个 \n 换行符。目前没有找到会多加这个换行符的说明,猜测是 unix 格式下,vim 总是让文件最后一行以 \n 结尾,把 \n 替换成 \r 后,再从 \r 替换成 \n 时,自动在最后一行添加了了一个 \n。
vim 在 fileformat 是 unix 的情况下,总是以
\n
结尾,这是 vim 自身实现的。即使执行
%s/\n/\r/g
命令,保存文件后,用 hexdump 查看这个文件的二进制内容,里面存的还是\n
,不是\r
。\n
对应的 ASCII 十六进制值是 0x0a,\r
对应的 ASCII 十六进制值是 0x0d。可以对照查看。如果只是想把行末的
\n
换成\r
,可以执行:set fileformat=mac
命令,mac 格式文件默认以\r
结尾。执行该命令后,保存文件,再用 hexdump 查看,就能看到
\r
对应的十六进制值 0x0d。执行
%s/\n/\r/g
命令后,多加一行空格,其实是多加了一个\n
换行符。目前没有找到会多加这个换行符的说明,猜测是 unix 格式下,vim 总是让文件最后一行以\n
结尾,把\n
替换成\r
后,再从\r
替换成\n
时,自动在最后一行添加了了一个\n
。