Когда я открываю файл vim
, я вижу странные ^M
символы.
К сожалению, любимая в мире поисковая система не справляется со специальными символами в запросах, поэтому я спрашиваю здесь:
Что это за
^M
персонаж?Как он мог туда добраться?
Как мне от этого избавиться?
vim
special-characters
Кристоф Вурм
источник
источник
help digraph-table
.Ответы:
Символ
^M
возврата каретки. Если вы видите это, вы, вероятно, смотрите на файл, созданный в мире DOS / Windows, где конец строки отмечен парой возврата каретки / перевода строки, тогда как в мире Unix конец строки отмечен одной новой строкой.Прочитайте эту статью для более подробной информации, а также запись в Википедии для новой строки .
В этой статье обсуждается, как настроить vim для прозрачного редактирования файлов с разными маркерами конца строки.
Если у вас есть файл
^M
в конце некоторых строк, и вы хотите избавиться от них, используйте это в Vim:(Нажмите Ctrl+ V Ctrl+, Mчтобы вставить это
^M
.)источник
:%s/^M/\r/g
вместо этого удалить^M
и заменить^M
символ новой строки\r
. Без%
, команда применяется только для текущей строки. И я наткнулся на несколько примеров , когда^M
не является в конце строки, такие какThe first line.^MThe second line.
:%s/^M/
^M
используется в UNIX\n
она используется в Unix, и это правильно. Это код ASCII10
, иначе известный как^J
.В большинстве операционных систем UNIX есть утилита
dos2unix
, которая преобразует CRLF в LF. Другие ответы охватывают вопрос «что они».источник
Более простой способ сделать это - использовать следующую команду:
Эта команда также работает с шаблонами пути, например
Если это не работает, попробуйте использовать другой режим:
-c
Установите режим конвертации. Где CONVMODE является одним из:ascii, 7bit, iso, mac
сascii
по - умолчанию.источник
Это сработало для меня
Команда: e ++ ff = dos говорит Vim снова прочитать файл, форсируя формат файла dos. Vim удалит окончания строк только в CRLF и LF, оставив в буфере только текст каждой строки.
тогда
и наконец
источник
ff
к формату файла? Как насчет++ff
?Еще один способ избавиться от возврата каретки с помощью
tr
команды.У меня есть небольшой скрипт, который выглядит так
источник
Вы можете очистить это с
sed
:Хитрость в том, как правильно войти в каретку. Как правило, вам нужно набрать,
C-v C-m
чтобы ввести буквальный возврат каретки. Вы также можете иметь возможность работать систочник
Что это ^ М?
^ M - символ возврата каретки. Если вы видите это, вы, вероятно, смотрите на файл, созданный в мире DOS / Windows, где конец строки отмечен парой возврата каретки / перевода строки, тогда как в мире Unix конец строки отмечен одной новой строкой.
Как оно могло туда попасть?
Когда происходит изменение в формате файла.
Как мне от этого избавиться?
откройте ваш файл с
сохраните его следующей командой
источник
В моем случае,
Ничто из вышеперечисленного не сработало, у меня был файл CSV, скопированный на компьютер Linux с моего Mac, и я использовал все вышеперечисленные команды, но ничего не помогло, кроме приведенного ниже
У меня был файл, в котором символы ^ M были переключены между строк примерно так, как показано ниже
источник
Вы можете использовать Vim в режиме Ex:
-b
двоичный режим%
выбрать все строкиs
замена\r
возврат кареткиx
сохранить и закрытьисточник
Добавьте следующую строку в ваш ~ / .vimrc
Затем, когда у вас есть файл с окончанием строки Windows, выполните команду «: Tounix».
источник
В прошлом я видел, что даже файлы конфигурации не анализируются должным образом и жалуются на пробелы, но если вы vi и сделаете список установок, он не будет отображать пробелы, grep filename [[space]] покажет вам ^ M
вот когда
dos2unix file
помогаетисточник