【问题标题】:End of line ^M character on UbuntuUbuntu 上的行尾 ^M 字符
【发布时间】:2015-01-24 19:00:49
【问题描述】:

我一直在使用 git 做一个项目。我总是使用括号,通常在 Ubuntu 上,但有时也在 Windows 上。关键是现在,在 Ubuntu 上,当我尝试向我的项目提交一些更改时,我看到它在每个修改行的末尾添加了 ^M。

如果我没记错的话,这是 Windows 的行尾字符。这就是为什么它让我感到困惑:为什么 Ubuntu 会添加它?还有最重要的问题,我能做些什么来摆脱它们?

我尝试了不同的文本编辑器,但没有运气。

【问题讨论】:

  • 我猜,这是你的文本编辑器。修复它
  • 许多 Unix 上的文本编辑器会在您编辑已经包含 Windows 样式结尾的文件时添加 ^M(我认为这是正确的做法)。您是否正在编辑最初在 Windows 上创建的文件?
  • @Chris 有可能,是的。但是,关于如何避免文本编辑器添加 ^M 的任何建议?我搜索了所有选项,但没有找到任何东西......
  • @Aljullu,只需将您的编辑器配置为在所有平台上默认使用 Unix 行尾。现有文件不会(可能)自动转换,但您的编辑器可能会为您执行此操作。如果没有,像dos2unix 这样的工具可以。
  • Linux/UNIX 行尾字符是 LF('\n',字符 10)。 Windows 行尾序列是两个字符,CR-LF("\r\n",字符 13 和 10)。 Windows 样式的行尾,当被假定为 UNIX 行尾的东西查看时,在行尾看起来像一个 ^M (CR) 字符; Windows 样式的行尾序列的第二个字符与 UNIX 样式的行尾字符匹配。

标签: git ubuntu character-encoding adobe-brackets


【解决方案1】:

^M 是回车符。您看到这个是因为您正在查看在 DOS (Windows) 中创建的 Unix 文件。在 DOS 中,end-of-line 由回车 (CR) (ASCII 13, \r) 和换行 (ASCII 10, \n) (LF) 组成,这称为 CR-LF \r\n。在 Unix 中,end-of-line 由单个换行符 \n 标记。这就是为什么你在行尾之前得到回车^M,因为这就是\r在Unix中的显示方式。你可以用 Vim 解决这个问题。

用 Vim 打开你的文件

Vim <file_name>

使用 :e 您将在 Vim 中重新加载文件,++ff=dos 会将文件转换为 dos 文件格式。现在您的文件被读取为 Windows 文件,所有 ^M 都消失了

:e ++ff=dos

现在使用 :set ff=unix 将文件转换为 Unix 格式。

:set ff=unix

最后执行 :wq 保存退出。

:wq

如果您想了解更多解决此问题的方法,请在此处查看:Convert between Unix and Windows text files

【讨论】:

  • 很好的答案,谢谢。
猜你喜欢
  • 2010-09-09
  • 2014-08-03
  • 1970-01-01
  • 2012-03-02
  • 2019-03-24
  • 1970-01-01
  • 2011-03-07
相关资源
最近更新 更多