Vim在新行上的奇怪行为

时间:2016-05-24 16:03:14

标签: vim

我遇到DOS新行(0d 0a)的问题,我尝试在vim中替换它。我相信之前已经做了几次,但现在我真的被卡住了,因为vim不想看到这个角色:

  1. 当我尝试按CTRL VCTRL M来运行:%s/^M//g时,我会看到错误:

    E486: Pattern not found: ^M

  2. 即使我尝试用:%s/\%x0d//g的十六进制代码替换它,我也会看到错误:

    E486: Pattern not found: \%x0d

    但是,我可以删除/替换其他字符,例如:%s/\%x61//g

  3. 当我尝试:%s/\n/\r/g时,没有任何反应

  4. 当我尝试使用:%s/\n/XXX/g然后:%s/XXX//g分两步删除它时,它会消失。但是,如果我在第二步使用:%s/XXX/\r/g,则vim会将0d 0a插回而不是预期的0a

  5. 因此,问题:有没有办法将所有新行转换为0a中的vim?为什么十六进制替换不起作用?

1 个答案:

答案 0 :(得分:1)

请参阅:help 'fileformat'

:set ff=unix
:w

应该这样做。

顺便说一句,这是匹配换行符:

:%s/\n/\r/

但它用换行符替换换行符,当你 写缓冲区vim将使用任何结束的行 由' fileformat'确定。