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

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


当前回答

为了让^M字符匹配,我必须在视觉上选择它,然后使用操作系统复制到剪贴板命令来检索它。您可以在尝试替换命令之前通过搜索字符来测试它。

/^M

应该选择第一行吗

:%s/^M/\r/g

将所有错误的^M替换为回车。

这是基于gvim 7的MacVim中的函数。

编辑:

在我的Windows 10机器上又遇到了这个问题,它有Ubuntu for Windows,我认为这导致了vim的文件格式问题。在这种情况下,将ff更改为unix、mac或dos,只会将^M更改为^J,然后再更改回来。

这种情况下的解决方案:

:%s/\r$/ /g
:%s/ $//g

我这样做的原因是我想确保我的文件是无损的。我可以使用:%s/\r$//g,但这将直接删除回车,并可能产生意想不到的结果。相反,我们将单数CR字符(这里是^M字符)转换为空格,然后删除行尾的所有空格(无论如何,这对我来说都是一个理想的结果)

很抱歉重新提出一个早已被回答的老问题,但似乎有一些困惑正在进行中,我想我可以帮助澄清一些,因为这是谷歌搜索的高。

其他回答

我花了一个下午的时间与\n ctrl-v 012作斗争(两者都为我提供null)。&费力通过这条线索,直到我到达metagrapher的。

\r对我来说很好!

/),/s/),/)\r/g

变成这样:

黑名单-extra:i386 (0.4.1, 0.4.1+nmu1), libmount1:i386 (2.20.1-5.1, 2.20.1-5.2), libblkid1:i386 (2.20.1-5.1, 2.20.1-5.2), libapt-pkg4.12:i386 (0.9.7.4, 0.9.7.5), nmap:i386 (6.00-0.1, 6.00-0.2), libsane-common:i386 (1.0.22-7.3,

变成这样:

26 libwv-1.2-4:i386 (1.2.9-3, automatic) openjdk-6-jre-headless:i386 (6b24-1.11.4-3, automatic) 28 jed:i386 (0.99.19-2.1)

魔法。我深深地感激

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

: ff + + =

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

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

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

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

为了节省击键次数,可以将其放在映射中,从而避免键入Ctrl+VCtrl+M。只要打开一个包含^M字符的文件,把它拉出来,然后把它粘贴到你的.vimrc中的一行中:

nnoremap <Leader>d :%s/^M//g<CR>