这些^ M是不断出现在我的emacs文件中?
所以我认为这可能与textmate有关,但是我们在一个小团队中工作,并且在git中几乎相同的文件存在一些全文冲突的问题,因为一个分支的每一行都附加了^ M。
这个神秘的^M
angular色应该做什么,它从哪里来?
我们的开发人员在Windows / Mac上使用emacs,在Mac上使用TextMate,在Mac上使用emacs,偶尔使用wp-admin文本编辑器。
任何人都有这个问题源于其中之一?
有人不正确地转换他们的行结束字符 。
我认为这是Windows人,因为他们喜欢他们的CRLF。 Unix非常喜欢LF,Mac喜欢CR,直到它被显示为Unix的方式。
在git-config中 ,将core.autocrlf
设置为true
以使git自动为您的平台正确转换行结束core.autocrlf
。
^M
是0x0d
,即回车符。 如果你的显示器看起来像
行1 ^ M 2号线
那么该文件必须来自Windows,因为Windows上的标准换行序列是CR
LF
( 0x0d 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字符并重新提交给您的团队,请小心。 之后他们可能会看到一个没有回车的文件。