Vim在每一行结束时显示^M。

我如何用在Vim中打开的文件中的普通换行符替换它?


当前回答

要在MacOS上使用sed,请执行以下操作:

sed -i.bak $'s/\r//' <filename>

解释:这里的$'STRING'语法属于bash shell。mac电脑不把\r当作特殊字符。通过在$ "中引用命令字符串,你告诉shell将\r替换为ANSI-C标准中指定的实际\r字符。

其他回答

不需要使用Ctrl: : % s / r \ / /美元

就我而言,

上面没有工作,我有一个CSV文件从我的mac复制到Linux机器,我使用了所有上述命令,但没有帮助,只有下面一个

tr "\015" "\n" < inputfile > outputfile

我有一个文件,其中^M个字符被夹在行之间,如下所示

Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKT6TG,TRO_WBFB_500,Trico,CARS,Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKTG0A,TRO_WB_T500,Trico,

首先,使用:set ff?来确定文件的格式。

我猜可能是unix,那么问题是你的文件是用fileformat=dos创建的,在行末添加“^M^J”,但用flieformat=unix读取,只从行末删除“^J”,留下“^M”。

只需在Vim命令行中输入:e++ ff=dos即可将文件格式从unix更改为dos。这应该能解决问题。如果不是,:%s/\r//g会帮助你。

Ctrl+M最小化我的窗口,但Ctrl+Enter实际上插入一个^M字符。我还必须确保不要在按下Ctrl键之间松开。

所以我的解决方案是:

:%s/<Ctrl-V><Ctrl-Enter>/\r/g

其中<Ctrl-V><Ctrl-Enter>表示按住Ctrl,然后释放V,然后释放Enter,然后释放Ctrl。

如果您正在处理windows生成的文件

上面的解决方案将在现有的行之间添加额外的行,因为^M后面已经有一个不可见的\r。

为了防止这种情况,您需要删除^M字符而不替换它们。

:%s/<Ctrl-V><Ctrl-Enter>//g

其中%表示“在这个缓冲区中”,s表示“替换”,/表示“(找到)下面的模式”,<Ctrl-V><Ctrl-Enter>指按下得到^M字符的键(见上文),//表示“没有”(或者,“在这两个斜杠之间的模式,是空的”),g是一个标志,表示“全局”,而不是一行中第一次出现。

这是唯一对我有效的方法:

: ff + + =

可以在http://vim.wikia.com/wiki/File_format找到它