如何使vim显示^ M并替换它

时间:2010-10-04 04:37:54

标签: regex vim

我的vim show标签为--->,但不显示windows ^ M字符。

并且,如何在vim中替代它。

续订============

我检查了我的vimrc它是否设置了fileformat = unix 但是当我打开一个dos文件时,设置ff就是dos

6 个答案:

答案 0 :(得分:65)

将CRLF显示为^ M:

:e ++ ff = unix

用LF代替CRLF:

:setlocal ff = unix
:W
:电子

答案 1 :(得分:60)

Vim确实显示^ M,除非在一种情况下:如果 fileformat = dos 那么它将不会显示尾随的crlf。

您可以通过键入:set找出您拥有的格式(unix或dos),只需更改格式(:set fileformat=unix)然后编写即可删除crlf中的^ M.出文件。

如果你在行的中间有一个^ M,那么你应该能够看到它,即使是在fileformat=dos文件中,你也可以将它与\r模式匹配。 (奇怪的是,在sub的替换部分中,替换换行的语法是\r,因此将^ M改为^ N的方式是由no-at-all-a-noop {{1} }。)

答案 2 :(得分:7)

vim正在自动检测fileformat和切换模式以匹配(看看set ff

如果要强制它以特定模式打开,请在命令行中抛出+ff=unix(显示^ M)或+ff=dos以在该模式下打开它。如果您使用的是Windows框,请在打开文件后尝试:e ++ff=unix

如果您尝试将这些字符删除,可以在一种模式下打开它,将ff设置为您想要的,然后保存文件。查看:h ff了解详情。

答案 3 :(得分:4)

您可以通过启用列表功能查看所有终端换行符和回车符::set list

你可以用 ^ V 将它们字面输入到匹配和替换命令中:例如要将所有^M转换为CR,您可以执行以下操作::%s/^V^M/CR/g(键入文字 ^ V 后跟文字 ^ M )。

答案 4 :(得分:1)

老式的方法-即使在vi中也可以使用:

    vim -b filename
    :%s/^V^M//g
    :x

说明:

  • vim -b以二进制模式打开vim,所有控制字符将可见
  • vi没有-b选项,但是vi不再需要它,默认情况下将显示^ M
  • :%s是搜索替换-我们将^ M替换为空
  • 您必须按顺序键入Control-V Control-M,您可以一直按住Control键,也可以释放它然后再次按-两者都可以。
  • ^ V将消失,仅^ M将保留。 ^ V表示原样插入下一个字符(尝试在^ V之后按Escape)。没有它,Control-M仅表示回车-或与按Enter相同。如果您有打开mobaXterm的任何控件,Control-M是将mobaXterm显示/隐藏到托盘的快捷方式-您必须禁用它或将其更改为其他内容才能插入^ M。
  • 不要尝试用鼠标复制^ M,它将分成两个字符^和M,这意味着在行首搜索M。
  • g表示全局-如果您仅在行尾有^ M,那么您真的不需要它
  • :x表示保存并退出-几乎没有人在使用它

答案 5 :(得分:1)

要从您的vim中删除^ M个字符,请执行以下操作: 在命令模式下输入

%s/

之后

ctrl+v and Enter. 

它应该看起来像:

%s/^M

最后用空白字符替换:

%s/^M//g