这些^ M是不断出现在我的emacs文件中?

所以我认为这可能与textmate有关,但是我们在一个小团队中工作,并且在git中几乎相同的文件存在一些全文冲突的问题,因为一个分支的每一行都附加了^ M。

这个神秘的^Mangular色应该做什么,它从哪里来?

我们的开发人员在Windows / Mac上使用emacs,在Mac上使用TextMate,在Mac上使用emacs,偶尔使用wp-admin文本编辑器。

任何人都有这个问题源于其中之一?

有人不正确地转换他们的行结束字符 。

我认为这是Windows人,因为他们喜欢他们的CRLF。 Unix非常喜欢LF,Mac喜欢CR,直到它被显示为Unix的方式。

在git-config中 ,将core.autocrlf设置为true以使git自动为您的平台正确转换行结束core.autocrlf

^M0x0d ,即回车符。 如果你的显示器看起来像

行1 ^ M
 2号线

那么该文件必须来自Windows,因为Windows上的标准换行序列是CR LF0x0d 0x0a ),而标准换行序列仅由LF上的LF组成。

如果该文件来自Mac OS 9或更早版本的系统,则会将其视为

行1 ^ Mline 2 ^ M

因为回车后没有换行符。

他们必须处理DOS风格的行尾和Unix风格之间的区别。 看看维基百科的文章 。 您可能能够find一个dos2unix工具来帮助,或者只需编写一个小脚本来自己修复它们。

编辑 :我在这里find了下面的Python示例代码:

 string.replace( str, '\r', '' ) 

而不是查询replace你也可以使用Mx删除尾随空白

~/.emacs (或eqiuvalent)中添加以下内容

 (defun dos2unix () "Replace DOS eolns CR LF with Unix eolns CR" (interactive) (goto-char (point-min)) (while (search-forward "\r" nil t) (replace-match ""))) 

然后你就可以简单地使用Mx dos2unix

在Emacs的行末, ^M表示一个回车符(\ r),换行符(\ n)。 如果一个人在Windows上编辑文件(行尾是回车符和换行符的组合),并且在Unix或Linux(行尾只是一个换行符)编辑的话,你会经常看到这一点。

angular色的组合通常是无害的。 如果您使用的是源代码控制,则可以configuration文本文件签入格式,以便为您进行魔术般的调整。 或者,您可能能够使用签入和签出触发器,将自动“修复”您的文件。 或者,你可能只是使用像dos2unix这样的工具来手动调整的东西。

正如大家所说的。 这是不同的结局风格。 MacOSX使用Unix行结尾 – 即LF(换行)。

Windows使用CR(回车)和LF(换行)作为行结束。 既然你使用的是Windows和Mac的问题源于哪里。

如果你在Windows中创build一个文件,然后把它带到Mac上,你可能会在行尾看到这些^ M字符。

如果你想删除它们,你可以很容易地在emacs中做到这一点。 只需突出显示并复制^ M字符并执行查询 – 用^replace^ M,然后完成。

编辑:一些其他的链接,可能是有帮助的。 http://xahlee.org/emacs/emacs_adv_tips.html

这个可以帮助你configurationemacs使用特定types的行结束风格。 http://www.emacswiki.org/emacs/EndOfLineTips

我碰到这个问题。 ^ M表示一个回车符,并在Ctrl-Q Ctrl-M (这将创build一个文字^ M)上进行search,这将允许你在Emacs中获得这个字符的句柄。 我沿着这些线做了一些事情:

 Mx replace-string [ENTER] Cq Cm [ENTER] \n [ENTER] 

也可以看看:

在emacs中隐藏^ M

如果您select删除^ M字符并重新提交给您的团队,请小心。 之后他们可能会看到一个没有回车的文件。