^在vim中每一行的末尾

DHa*_*ick 128 linux windows vim

当我使用vim和其他编辑器编辑源文件有时在行的末尾时,我会在每行的末尾得到这些^ M个字符.我认为它与在Windows中编辑文件然后在linux中有关.如何自动删除所有这些?

小智 126

作为命令,键入

:%s/^M$//
Run Code Online (Sandbox Code Playgroud)

(要获得^ M,请按^ V ^ M,其中^是大多数键盘上的CTRL)

  • 另外,:%s /\r $ //以避免^ V ^ M麻烦 (61认同)
  • 或者,保存一个字符:`:%s /\r $` (7认同)
  • @sehe技术上保存2个字符:) (2认同)

sar*_*old 84

剥离DOS行结尾的一种简单方法是使用以下ff选项:

:set ff=unix
:wq
Run Code Online (Sandbox Code Playgroud)

现在你的文件回到了旧的Unix方式.

如果你想添加 DOS行结尾(为了让打印机满意,或者与没有漂亮工具的Windows朋友一起传输文件),你可以轻松地走向相反的方向:

:set ff=dos
:wq
Run Code Online (Sandbox Code Playgroud)

  • vim没有找到任何^ m,或\ r,或任何其他行结尾,但这有效.谢谢 :) (8认同)
  • Vim找不到任何^ M或\ r \n,但这对我有用!谢谢@sarnold (2认同)

jqn*_*qno 33

你可以这样做:

:set fileformats=dos
Run Code Online (Sandbox Code Playgroud)

它会隐藏^M文件,而不会触及文件.

  • 除非有DOS和Unix格式行混合:-( (3认同)

Ada*_*sek 17

有一个名为dos2unix的程序应该为你删除它们.Windows使用不同的行结束字符,这就是为什么会发生这种情况.


The*_*ngK 6

这对我来说是一个文件,其中包含一行:

首先找到所有比赛

:%s/^M//
Run Code Online (Sandbox Code Playgroud)

(要获得^M,请按^ V ^ M,其中^ Ctrl在大多数键盘上)

然后用换行符替换

:%s//\r/g
Run Code Online (Sandbox Code Playgroud)

合并命令将是:

:%s/^M/\r/g
Run Code Online (Sandbox Code Playgroud)