7

Почему Emacs вставляет ^ m в конце каждой строки в моей среде Linux?

4 ответа4

14

Emacs Line Return и Windows, Unix, Mac, все это ^ M ^ J ^ L

Q: Почему Emacs показывает ^ M в буфере?

A: «^ M» - это обозначение каретки ASCII для непечатаемого символа возврата каретки (ASCII 13). Если emacs показывает это, возможно, это потому, что у вас смешанные символы ^ M и ^ J, и emacs не может интерпретировать их последовательно как символы новой строки.

Чтобы это исправить, назовите «set-buffer-file-coding-system», затем укажите одно из: «mac», «dos», «unix». Затем сохраните файл. Если это не помогает, вы можете использовать поиск и замену, чтобы удалить его вручную.

1

Я знаю, что это старый вопрос, но для записи есть и другие причины, почему ^ M появляется в конце файлов. У меня просто была такая же проблема. Вот что случилось:

  1. Каждый день я использую один и тот же текстовый файл в Emacs и никогда не видел ^ M. Я использую этот файл, чтобы делать личные заметки.
  2. В прошлый раз я использовал скопированный файл и вставил содержимое письма, полученного в MS Outlook.
  3. Сегодня я открыл один и тот же старый файл, и в конце каждой строки имелось ^ M, и все не-ASCII-символы были заменены странными кодами, такими как ???.

Как это исправить:

Откройте тот же файл на VI (да, я знаю, заклятый враг) и найдите символы, которые выделены цветом. На моем терминале он синий. Удалите этих персонажей, и все будет хорошо работать на Emacs.

Причина:

Проблема была вызвана странными кавычками из Outlook. Самое смешное, что Emacs не показывает эту проблему до тех пор, пока вы не откроете файл, и вам будет сложно сразу определить, что у вашего файла есть проблема.

1

Я знаю, что этот вопрос был решен, но я хотел бы упомянуть, что Dos2Unix является удобной частью инструментария для работы с файлами между машинами UNIX/DOS/Mac. Это простой командный подход для добавления / удаления предпочтительных для ОС окончаний строк.

0

Если вы используете Emacs преимущественно в среде DOS/Windows, Emacs должен правильно распознать систему с конечной строкой и работать с ней прозрачно.

Вы можете увидеть, что ^ M внезапно появляется в файле, потому что он был отредактирован, возможно, с помощью скрипта, который добавил строки с окончаниями строк UNIX, и теперь окончания строк смешиваются.

Вы можете исправить эти строки, добавив ^ M обратно на них, сохранить файл, уничтожить буфер и снова открыть его. Теперь это должно выглядеть нормально, и сказать (DOS) в качестве маркировки кодировки в строке состояния.

Регулярное выражение для поиска это \([^^ M] \)$ и заменить на \1 ^ M. Не забудьте использовать Ctrl-Q для «цитирования» символов Ctrl-M.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .