Что эти ^ М, которые продолжают появляться в моих файлах в emacs?

Итак, я думаю, что это может быть связано с textmate, но мы работаем в небольшой команде и имеем некоторые проблемы с полными файловыми конфликтами почти идентичных файлов в git, потому что каждая строка одной ветки имеет добавленный ^ M к нему.

Каков этот загадочный персонаж ^M, и откуда он может быть?

Наши разработчики используют emacs для Windows/Mac, TextMate на Mac, coda на Mac и иногда текстовый редактор wp-admin.

У кого-нибудь такая проблема связана с одним из них?

Ответ 2

В git-config установите core.autocrlf в true, чтобы git автоматически конвертировал концы строк для вашей платформы.

Ответ 3

^M равен 0x0d, то есть символ возврата каретки. Если ваш дисплей выглядит как

line 1^M
line 2^M

то файл должен быть из Windows, потому что стандартная последовательность строк в Windows - CR LF (0x0d 0x0a), тогда как стандартная последовательность строк новой строки состоит только из LF в Unices.

Если файл появился из Mac OS 9 или более ранней системы, вы увидите его как

line 1^Mline 2^M

потому что после возврата каретки не будет никаких строк.

Ответ 4

Они имеют отношение к разнице между окончанием строки стиля DOS и стилем Unix. Ознакомьтесь с статьей Википедии. Вы можете найти инструмент dos2unix, чтобы помочь или просто написать небольшой script, чтобы исправить их самостоятельно.

Изменить. Я нашел следующий пример кода Python здесь:

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

Ответ 5

вместо замены запроса вы также можете использовать M-x delete-trailing-whitespace

Ответ 6

Поставьте следующее в ~/.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 "")))

а затем вы сможете просто использовать M-x dos2unix.

Ответ 7

^M в конце строки в Emacs указывает на возврат каретки (\ r) с помощью строки (\n). Вы будете часто видеть это, если один человек редактирует файлы в Windows (где конец строки представляет собой комбинацию символов возврата каретки и символа новой строки), и вы редактируете в Unix или Linux (где конец строки является только символом новой строки).

Комбинация символов обычно не является вредной. Если вы используете исходный элемент управления, вы можете настроить формат проверки текстового файла, чтобы линии были магически настроены для вас. Кроме того, вы можете использовать триггеры регистрации и проверки, которые автоматически "исправят" файлы для вас. Или вы можете просто использовать инструмент, например dos2unix для ручной настройки.

Ответ 8

Как все говорили. Это отличный стиль окончания строки. MacOSX использует финальные строки Unix, то есть LF (строка).

В качестве конечной строки Windows использует как CR (возврат каретки), так и LF (линия). Поскольку вы используете как окна, так и макросы, из-за которых возникает проблема.

Если вы создаете файл в Windows и затем переносите его на mac, вы можете увидеть эти символы ^ M в конце строк.

Если вы хотите их удалить, вы можете сделать это очень легко в emacs. Просто выделите и скопируйте символ ^ M и выполните запрос-replace ^ M, и вы сделали.

EDIT: Некоторые другие ссылки, которые могут помочь. http://xahlee.org/emacs/emacs_adv_tips.html

Это помогает настроить emacs для использования определенного типа стиля окончания строки. http://www.emacswiki.org/emacs/EndOfLineTips

Ответ 9

Я столкнулся с этим вопросом некоторое время назад. ^ M представляет собой возврат каретки, а поиск в Ctrl-Q Ctrl-M (это создает литерал ^ M) позволит вам получить дескриптор этого символа в Emacs. Я сделал что-то в этом роде:

M-x replace-string [ENTER] C-q C-m [ENTER] \n [ENTER]

Ответ 10

См. также:

Скрытие ^ M в emacs

Будьте осторожны, если вы решите удалить символы ^ M и повторно отправить в свою команду. После этого они могут видеть файл без возврата каретки.

Ответ 11

Я использую Android Studio (JetBrains IntelliJ IDEA) на Mac OS, и моя проблема заключалась в том, что ^ M начал появляться в некоторые файлы в моем запросе на перенос на GitHub. Что для меня работало, это изменение разделителя строк для файла.

Откройте нужный файл в редакторе, перейдите к Файл перейдите к Линейные разделители перейдите к Затем выберите лучший вариант для вас (для меня это было LF - Unix и OS X (\n))

В следующей статье эта проблема возникает из-за путаных окончаний строк между операционными системами: http://jonathonstaff.com/blog/issues-with-line-endings/

И больше информации вы можете найти здесь: https://www.jetbrains.com/help/idea/configuring-line-separators.html#d84378e48

введите описание изображения здесь