Что это за ^ M, которые продолжают появляться в моих файлах в emacs? - PullRequest
139 голосов
/ 01 декабря 2009

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

Что должен делать этот таинственный персонаж ^M, и откуда он может взяться?

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

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

Ответы [ 14 ]

1 голос
/ 08 мая 2018

Если в вашей системе не установлена ​​утилита dos2unix, вы можете создать свою собственную, чтобы избавиться от конечных символов Windows:

vi ~/dos2unix.bash:

со следующим содержанием

#!/bin/bash
tr -d '\r' < $1 > repl.tmp
mv -f repl.tmp $1

В вашем ~ / .bashrc добавьте строку:

alias 'dos2unix=~/dos2unix.bash'

Применяя

dos2unix file_from_PC.txt

удалит символы ^ M в конце строк в файле file_from_PC.txt. Вы можете проверить, есть ли они у вас или нет, используя cat:

cat -v file_from_PC.txt
1 голос
/ 08 января 2010

Смотри также:

Сокрытие ^ M в emacs

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

1 голос
/ 01 декабря 2009

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

M-x replace-string [ENTER] C-q C-m [ENTER] \n [ENTER]
0 голосов
/ 16 июля 2018

Решением для меня было использование следующей функции elisp, найденной в этой Emacs Wiki Article .

 (defun dos2unix ()
      "Not exactly but it's easier to remember"
      (interactive)
      (set-buffer-file-coding-system 'unix 't) )

Выполните функцию M-x dos2unix в буфере и сохраните файл, все ^M исчезнут.

...