Vim在每一行结束时显示^M。
我如何用在Vim中打开的文件中的普通换行符替换它?
Vim在每一行结束时显示^M。
我如何用在Vim中打开的文件中的普通换行符替换它?
当前回答
在VIM命令模式下:
:e ++ff=dos | setl ff=unix | up
e++ ff=dos -强制打开dos格式的文件。
Setl ff=unix -将文件转换为unix格式。
上保存文件时,仅当已修改。
其他回答
在串行控制台上,所有的vi和sed解决方案都不适合我。我不得不:
cat inputfilename | tr -d '\r' > outputfilename
在windows下,尝试:%s/<C-Q><C-M>/g
这些建议对我都不起作用,因为在使用vim和eclipse时,我设法获得了^M换行符。我怀疑我遇到了一个外部案件但为了能帮助到其他人。
:%s/.$//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是一个标志,表示“全局”,而不是一行中第一次出现。
我用sed做了这个:
Sed -i -e 's/\r/\n/g'文件名