Текстовый файл с ^M на каждой строке

Я просто получил файл исходного кода от друга. Файл был создан в UNIX. Когда я открыл его в использовании Windows NotePad ++, каждая строка имела одну дополнительную пустую строку.

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

Каков этот ^M? Как Вы препятствуете тому, чтобы он был вставлен?

7
задан sivabudh 15 July 2010 в 21:38
поделиться

3 ответа

Это окончания строк в стиле DOS / Windows (чтобы быть педантичным, это то, что они обычно называют сейчас, но наиболее ранние операционные системы, отличные от UNIX, такие как CP / M и OS / 2, также имели их). В различных системах Unix окончания строк имеют вид \ n . В DOS / Windows окончание строки \ r \ n (CR + LF или возврат каретки и перевод строки). \ r - это то, что отображается как ^ M . Чтобы удалить их в vim, я делаю:

:%s/^M//

Вы можете получить ^ M, выполнив CTRL + V , а затем CTRL + M

Если вы работаете в системе UNIX, вы можете использовать dos2unix .

13
ответ дан 6 December 2019 в 14:00
поделиться

артефакт Windows. У вас есть 2 варианта

  1. Используйте редактор, в котором вы можете указать формат сохранения
  2. Используйте dos2unix в unix-подобной системе для преобразования
2
ответ дан 6 December 2019 в 14:00
поделиться

Это возврат каретки.Редакторы DOS / Windows обычно используют возврат каретки и перевод строки, редакторы Unix предпочитают использовать только перевод строки. Некоторые редакторы, такие как geany и textpad, могут обнаружить это и не показать вам ^ M, а некоторые позволят вам сохранить, если вы выберете стиль unix или стиль crlf. Также существует проблема наличия EOF в конце файла, который раньше требовался некоторыми компиляторами.

0
ответ дан 6 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: