vim показывает на каждой строке, заканчивающейся ^ M
Как я могу заменить это «нормальным» переводом строки?
vim
line-breaks
ByteNirvana
источник
источник
Ответы:
Это единственное, что сработало для меня:
Нашел по адресу: http://vim.wikia.com/wiki/File_format
источник
:e ++ff=dos
затем:set ff=unix
преобразует окончания в нормальный формат.команда
Где
<Ctrl-V><Ctrl-M>
означает тип Ctrl+, Vто Ctrl+ M.объяснение
заменитель,% = все строки
Символы ^ M (Ctrl-V - это способ записи символа Ctrl ^ в Vim, а Ctrl-M записывает M после регулярного выражения, в результате чего получается специальный символ ^ M)
с новой строкой (
\r
)И сделать это глобально (не только первое вхождение на линии).
источник
:%s/<Ctrl-V><Ctrl-M>/\r/g
(где \ r заменяет ^ M новой строкой).В Linux и Mac OS работает следующее:
где
^V^M
означает тип Ctrl+ V, затем Ctrl+ M.Примечание: в Windows вы, вероятно, захотите использовать
^Q
вместо^V
, так как по умолчанию^V
отображается для вставки текста.источник
%s/\r/\r/g
хорошо работает на MacVim для файла, отображаемого только^M
в конце строк (одна длинная строка в терминах MacVim). Понятно, что \ r означает разные вещи в шаблоне против частей замены этой команды.В
vim
, взгляд на формат файла - DOS или Unix::set filetype=unix
:set fileformat=unix
Файл будет записан обратно без символов возврата каретки (CR, ^ M).
источник
set ff=unix
как маленький ярлык точно так же, какft
ярлык дляfiletype
Файл, который я создал с помощью BBEdit, который я видел в MacVim, отображал кучу
^M
возвратов строк вместо обычных. Следующая строка заменяет решенную проблему - надеюсь, это поможет:Это интересно, потому что я заменяю разрывы строк тем же символом, но я полагаю, что Vim просто нужно, чтобы новый \ r отображался правильно. Мне было бы интересно узнать основную механику того, почему это работает.
источник
\r
символы,\n
несмотря на то, что указывалось\r
как замена Не жалуюсь, это именно то, что я хотел. Просто странно.Во-первых, используйте,
:set ff?
чтобы выяснить формат файла вашего файла.Я предполагаю, что это может быть
unix
, тогда проблема в том, что ваш файл был создан сfileformat=dos
добавлением «^ M ^ J» в конец строки, но читается сflieformat=unix
удалением только «^ J» с конца строки, оставляя там «^ M».Просто
:e ++ff=dos
введите в командной строке Vim, чтобы изменить формат файла с Unix на DOS. Это должно решить проблему. Если нет,:%s/\r//g
должен помочь вам.источник
:e ++ff=dos
затем:set ff=unix
и:w
для того, чтобы символ ^ M соответствовал, мне пришлось визуально выбрать его, а затем использовать команду «Копировать в буфер обмена» для его извлечения. Вы можете проверить это, выполнив поиск символа, прежде чем пытаться выполнить команду замены.
следует выбрать первую плохую строку
заменит все ошибочные ^ M на возврат каретки.
Это как функции в MacVim, который основан на gvim 7.
РЕДАКТИРОВАТЬ:
Снова возникла эта проблема на моем компьютере с Windows 10, на котором установлена Ubuntu для Windows, и я думаю, что это вызывает проблемы с форматированием файлов для vim. В этом случае изменение ff на unix, mac или dos сделало только изменение ^ M на ^ J и обратно.
Решение в этом случае:
Причина, по которой я пошел по этому пути, заключается в том, что я хотел убедиться, что у меня нет деструктивного файла. Я мог бы,
:%s/\r$//g
но это удалило бы возврат каретки прямо, и могло бы иметь неожиданные результаты. Вместо этого мы преобразуем единственный символ CR, здесь символ ^ M, в пробел, а затем удаляем все пробелы в конце строк (что для меня является желательным результатом независимо от)Извините за возрождение старого вопроса, на который уже давно дан ответ, но, похоже, возникла некоторая путаница, и я подумал, что помогу прояснить кое-что из этого, так как это происходит в поисковой выдаче Google.
источник
Ни один из них не работал для меня, поэтому я попробовал это, который работал:
тип
:%s/
Нажмите CTRL-VCTRL-M
тип
//g
Нажмите Enter
Таким образом, общая команда в Vim должна выглядеть
:%s/^M//g
Что это делает:
:%s
(найти и заменить)/^M/
(этот символ)/
(без символов)g
(глобально).источник
^ M извлекается Ctrl+ Vи M, так что
источник
Без необходимости использовать Ctrl:
:%s/\r$//
источник
Простая вещь, которая работала для меня
источник
Я сделал это с помощью sed:
sed -i -e 's/\r/\n/g' filename
источник
sed -e 's/\r/\n/g' <<< 'over and over'
->oven and oven
sed
но не для BSDsed
(как в OSX). Любой, кто исправляет разрывы строк, вероятно, работает с различными операционными системами, поэтому полезно знать, когда ответ будет работать.Как насчет просто:
:%s/\r//g
это полностью сработало для меня.Это просто очистит конец строки всех строк, удалит ^ M и все.
источник
Есть много других ответов на этот вопрос, но, тем не менее, мне лучше всего подходит следующее, так как мне нужно было решение для командной строки:
Объяснение:
myfile
:e ++ff=dos
чтобы принудительно перезагрузить весь файл как конец строки DOS.:w ++ff=unix
чтобы записать файл, используя конец строки Unixисточник
Ctrl+ Mминимизирует мое окно, но Ctrl+ Enterфактически вставляет
^M
символ. Я также должен был быть уверен, чтобы не отрывать Ctrlключ между нажатиями.Таким образом, решение для меня было:
Где
<Ctrl-V><Ctrl-Enter>
означает нажать и удерживать Ctrl , нажмите и отпустите V, нажмите и отпустите Enter, а затем отпустите Ctrl .Если вы работаете над файлом, созданным Windows
Вышеупомянутое решение добавит дополнительную строку между существующими строками, потому что уже есть невидимая
\r
после^M
.Чтобы предотвратить это, вы хотите удалить
^M
символы, не заменяя их.Где
%
означает «в этом буфере»,s
означает «заменить», «/
означает» (найти) следующий шаблон, «<Ctrl-V><Ctrl-Enter>
относится к клавишам, нажимаемым для получения^M
символа (см. Выше),//
означает« с пустым »(или,« с шаблоном » между этими двумя косыми чертами, который является пустым "), иg
является флагом, означающим" глобально ", в отличие от первого вхождения в строке.источник
Это сработало для меня:
\n
конец строки)Итак, в VIM:
источник
В моем случае,
Ничто из вышеперечисленного не сработало, у меня был файл CSV, скопированный на компьютер Linux с моего Mac, и я использовал все вышеперечисленные команды, но ничего не помогло, кроме приведенного ниже
У меня был файл, в котором символы ^ M были переключены между строк примерно так, как показано ниже
источник
В качестве альтернативы, есть утилиты с открытым исходным кодом, называемые dos2unix и unix2dos, которые делают именно это. В системе Linux они, вероятно, установлены по умолчанию; для системы Windows вы можете загрузить их с http://www.bastet.com/ среди других.
источник
где ^ M набирается одновременным нажатием 3 клавиш, ctrl + v + m
источник
используйте утилиту dos2unix, если файл был создан в Windows, используйте утилиту mac2unix, если файл был создан на Mac. :)
источник
Используйте одну из этих команд:
Или
источник
Это сработало для меня:
источник
Чтобы сохранить нажатия клавиш , вы можете избежать ввода Ctrl+ VCtrl+ M, поместив это в отображение. Просто откройте файл, содержащий символ ^ M, восстановите его и вставьте в строку, подобную этой, в вашем .vimrc:
источник
Ни одно из этих предложений не сработало для меня, так как мне удалось получить множество
^M
разрывов строк при работе с vim и eclipse. Я подозреваю, что я столкнулся с внешним случаем, но в случае, если это помогает кому-то, кого я сделал.И это решило мою проблему
источник
Если вы печатаете
^M
с помощью,Shift+6 Caps+M
он не примет.Вам нужно ввести
ctrl+v ctrl+m
.источник
^M
дает нежелательные разрывы строк. Для этого мы можем использоватьsed
команду следующим образом:источник
Просто удалите
set binary
в свой .vimrc!источник
Чтобы использовать
sed
на MacOS, сделайте это:Объяснение:
$'STRING'
синтаксис здесь относится к Баш оболочки. Маки не воспринимаются\r
как особые персонажи. Цитируя командную строку в ней,$''
вы говорите оболочке заменить\r
действительный\r
символ, указанный в стандарте ANSI-C.источник
«Эта функция сохраняет список переходов
источник
Я провел день, борясь с \ n ctrl-v 012 (оба из которых дают мне ноль). И работал через эту тему, пока я не достиг мета-фотографа.
\r
работал нормально для меня!получилось примерно так:
во что-то вроде этого:
Магия. Я глубоко благодарен
источник