Почему Emacs вставляет ^ m в конце каждой строки в моей среде Linux?
4 ответа
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». Затем сохраните файл. Если это не помогает, вы можете использовать поиск и замену, чтобы удалить его вручную.
Я знаю, что это старый вопрос, но для записи есть и другие причины, почему ^ M появляется в конце файлов. У меня просто была такая же проблема. Вот что случилось:
- Каждый день я использую один и тот же текстовый файл в Emacs и никогда не видел ^ M. Я использую этот файл, чтобы делать личные заметки.
- В прошлый раз я использовал скопированный файл и вставил содержимое письма, полученного в MS Outlook.
- Сегодня я открыл один и тот же старый файл, и в конце каждой строки имелось ^ M, и все не-ASCII-символы были заменены странными кодами, такими как ???.
Как это исправить:
Откройте тот же файл на VI (да, я знаю, заклятый враг) и найдите символы, которые выделены цветом. На моем терминале он синий. Удалите этих персонажей, и все будет хорошо работать на Emacs.
Причина:
Проблема была вызвана странными кавычками из Outlook. Самое смешное, что Emacs не показывает эту проблему до тех пор, пока вы не откроете файл, и вам будет сложно сразу определить, что у вашего файла есть проблема.
Я знаю, что этот вопрос был решен, но я хотел бы упомянуть, что Dos2Unix является удобной частью инструментария для работы с файлами между машинами UNIX/DOS/Mac. Это простой командный подход для добавления / удаления предпочтительных для ОС окончаний строк.
Если вы используете Emacs преимущественно в среде DOS/Windows, Emacs должен правильно распознать систему с конечной строкой и работать с ней прозрачно.
Вы можете увидеть, что ^ M внезапно появляется в файле, потому что он был отредактирован, возможно, с помощью скрипта, который добавил строки с окончаниями строк UNIX, и теперь окончания строк смешиваются.
Вы можете исправить эти строки, добавив ^ M обратно на них, сохранить файл, уничтожить буфер и снова открыть его. Теперь это должно выглядеть нормально, и сказать (DOS) в качестве маркировки кодировки в строке состояния.
Регулярное выражение для поиска это \([^^ M] \)$ и заменить на \1 ^ M. Не забудьте использовать Ctrl-Q для «цитирования» символов Ctrl-M.