Vim在每一行结束时显示^M。
我如何用在Vim中打开的文件中的普通换行符替换它?
Vim在每一行结束时显示^M。
我如何用在Vim中打开的文件中的普通换行符替换它?
当前回答
就我而言,
上面没有工作,我有一个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,
其他回答
^M给出不需要的换行符。要处理这个问题,我们可以使用sed命令,如下所示:
sed 's/\r//g'
首先,使用:set ff?来确定文件的格式。
我猜可能是unix,那么问题是你的文件是用fileformat=dos创建的,在行末添加“^M^J”,但用flieformat=unix读取,只从行末删除“^J”,留下“^M”。
只需在Vim命令行中输入:e++ ff=dos即可将文件格式从unix更改为dos。这应该能解决问题。如果不是,:%s/\r//g会帮助你。
在Linux和Mac OS上,以下工作,
:%s/^V^M/^V^M/g
其中^V^M意味着输入Ctrl+V,然后Ctrl+M。
注意:在Windows上,你可能想使用^Q而不是^V,因为默认情况下^V被映射为粘贴文本。
如果文件是在windows上创建的,请使用dos2unix实用程序。 如果文件是在mac上创建的,请使用mac2unix实用程序:)
以上这些方法对我都没用。(替换\r, ^M, ctrl-v-ctrl-m) 我使用复制和粘贴将我的文本粘贴到一个新文件中。
如果你有宏干扰,你可以尝试:在粘贴操作之前设置粘贴,在粘贴操作之后:设置nopaste。