H5W3
当前位置:H5W3 > 其他技术问题 > 正文

vim %s/\n/\r/g 会在结尾多加一行空行

如题

默认最后一行会自动添加一行空行这个没有变动

现在的解决方法就是

1,$-1s/\n/\r/g

回答:

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

本文地址:H5W3 » vim %s/\n/\r/g 会在结尾多加一行空行

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址