Как преобразовать ^м разрыв строки в 'нормальный' разрыв строки в файл, открытый в Vim?

ВИМ показывает на каждый конец строки ^м

Как мне сделать, чтобы заменить это с 'обычных' разрыв строки?

Комментарии к вопросу (3)

Команда #

:%s//\r/g

Где в <Ctrl " и " V><сочетание клавиш Ctrl-м> означает тип <и>сочетание клавиш Ctrl</роз>+<и>в</роз> потом <и>сочетание клавиш Ctrl</роз>+<и>м</роз>. <БР/> <БР/>

Объяснение

:%s

замены, % = всех строк

^M символов (сочетание клавиш ctrl-v-это ВИМ способ написания клавиши Ctrl ^ символ и Ctrl-м пишет м после регулярного выражения, в результате чего в ^М специальный символ)

/\r/

с новой строки ()

g

И сделать это глобально (а не только первое вхождение в строку).

Комментарии (23)

На Linux и Mac OS, то следующие работы,

:%s/^V^M/^V^M/g

где ^в^М означает тип <и>на Ctrl</роз>+<и>в</роз>, потом <и>сочетание клавиш Ctrl</роз>+<и>м</роз>.

<суб>Примечание: на Windows, вы, вероятно, хотите использовать вместо , так как по умолчанию сопоставляется вставить текст.</суб>

Комментарии (26)

В ВИМ, посмотри на формат файла — DOS или Unix:

в <ы> У:Установите тип файла=ОС UNIX</с>

установите значение=ОС UNIX`

Файл будет записан обратно без возврата каретки (CR, ^м) символов.

Комментарии (9)
Решение

Это единственное, что работал для меня:

:е ++ФФ=Дос

Нашли его по адресу: http://vim.wikia.com/wiki/File_format

Комментарии (6)

Файл я создал с BBEdit видел в MacVim показывал кучу возвращает строку^м вместо обычных. Следующую строку заменить решена проблема - надеюсь, что это помогает:

:%s/\r/\r/g

Это'ы интересно, потому что я'м заменять переносы строки с таким же характером, но я полагаю, что ВИМ просто нужно, чтобы получить свежий \р для корректного отображения. Я'd быть заинтересованы, чтобы знать базовую механику того, почему это работает.

Комментарии (7)

Во-первых, использовать:установить ФФ?`, чтобы выяснить формат файла свой файл.

Я предполагаю, что это может быть в Unix, то проблема в том, что файл был создан сзначение=Досдобавить " и^М^Ж" на конце линии, но прочитала с flieformat=ОС UNIX только удаление " и^Ж" из конца строки, оставляя " и^М" и есть.

Просто введите :е ++ФФ=DOS и в командной строке Vim В изменить файл&#39;формата S из Unix в DOS. Это должно решить проблему. Если нет,:%с/\р//г` должны помочь вам.

Комментарии (1)

для того, чтобы получить ^м характером, чтобы соответствовать я должен был визуально выделить его, а затем использовать ОС скопировать в буфер обмена команду, чтобы восстановить его. Вы можете проверить это, выполнив поиск для персонажа, прежде чем пытаться команду заменить.

/^M

должны выбрать первый плохой линии

:%s/^M/\r/g

заменит все странствующие ^м с возврата каретки.

Это как функции в MacVim, который основан на GVim выступает 7.

Редактировать:

Опять эта проблема на моем компьютере под управлением Windows 10, которая есть в Ubuntu для Windows, и я думаю, что это вызывает вопросы fileformat для ВИМ. В этом случае изменение ФФ в Unix, Mac или Дос не изменить ^м ^J и обратно.

Решение в этом случае:

:%s/\r$/ /g
:%s/ $//g

Причина, по которой я пошел этот маршрут, потому что я хотел удостовериться, что я был неразрушающего мой файл. Я мог бы :%п/а\R$//г но, что бы исключить возврат каретки и может иметь неожиданные результаты. Вместо этого мы преобразуем особой символов CR, здесь ^м характер, в пространство, а затем удалить все пробелы в конце строк (что для меня желаемого результата вне зависимости от)

К сожалению в возрождении старый вопрос, который уже давным-давно ответил, но, казалось, какая-то путаница началась, и я думал, что я'd помогите прояснить некоторые, что после этого поднимается высоко в поисковых запросах в Google.

Комментарии (3)

Ни один из этих работал для меня, поэтому я попытался это, который работал:

тип :%ы/

пресс <и>Ctrl " и " V</КБД><и>на Ctrl-м</роз>

типа //Г

пресс <и>введите</КБД>

Так что в целом команда в Vim должна выглядеть :%ы/^г//г

Что это делает: :%S В (найти и заменить) /^м/ (этот символ) / (не символов) и G (во всем мире).

Комментарии (1)

Без необходимости использовать Ctrl: :%п/а\R$//

Комментарии (3)

^М извлекается <и>на Ctrl</роз>+<и>в</роз> и <и>м</роз>, так что

s/^M//g
Комментарии (0)

Простую вещь, что работал для меня

dos2unix   filename
Комментарии (0)

Я сделал это с помощью sed:

  • Current функциональности sed -и-Е &#39;ы/\р/\н/Г&#39; имя_файла
Комментарии (3)

Как насчет просто: :%с/\р//г Что сработало для меня.

Это нужно просто почистить конце линии все линии, он удаляет ^м и, что'с его.

Комментарии (0)

Есть много других ответов на этот вопрос, но все же, как лучше для меня, так как мне нужно решение командной строки:

vim -u NONE -c 'e ++ff=dos' -c 'w ++ff=unix' -c q myfile

Объяснение:

  • Без загрузки каких-либо .файлы vimrc, откройте файл myfile`
  • Запустить :е ++ФФ=Дос, чтобы обновить весь файл в качестве окончания строки DOS.
  • Запустить :ш ++ФФ=ОС UNIX, чтобы записать файл, используя строки Unix окончаний
  • Бросить ВИМ
Комментарии (1)

<и>сочетание клавиш Ctrl</роз>+<и>м</роз> сокращает мое окно, но <и>клавиши Ctrl</роз>+<и>введите</роз> на самом деле вставляет характер. Я также должен был убедиться не поднять <и>на Ctrl</роз> ключ между нажатиями.

Так что решение для меня было:

:%s//\r/g

Где в <Ctrl " и " V><международной научно-технической конференции> средства для нажмите и удерживайте <и>сочетание клавиш Ctrl</КБД и GT; нажмите и отпустите <и>в</КБД и GT; нажмите и отпустите <и>введите</роз>, а затем отпустите <рэоз>сочетание клавиш Ctrl</КБД>.

Если вы работаете на Windows-генерируемый файл

Описанное выше решение будет добавлять дополнительную строку между существующими строками, потому что уже невидимый после .

Чтобы предотвратить это, вы хотите, чтобы удалить символы без их замены.

:%s///g

Где % означает "в этот буфер, и" ы означает "подставить" Ну / означает "(найти) следующим образом:" ПО в <Ctrl " и " V><международной научно-технической конференции> ссылается на клавиши нажимать, чтобы получить (см. выше), // означает "разбитого корыта" и (или "с рисунком между этими двумя слешами, где пусто"), и Г - Это флаг смысл-то ", то&quot глобально; в отличие от первого вхождения в строку.

Комментарии (0)

В моем случае

Ничего, работал, у меня CSV-файл скопирован в Linux-машину от моего Mac, и я использовал все вышеперечисленные команды, но ничего не помогало, но ниже

tr "\015" "\n" < inputfile > outputfile

У меня был файл, в котором ^M символов были sandwitched между строк что-то вроде ниже

Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKT6TG,TRO_WBFB_500,Trico,CARS,Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKTG0A,TRO_WB_T500,Trico,
Комментарии (0)

Этот работал для меня:

  1. Установить формат файла в Unix (строка\Н окончание)
  2. сохраните файл

Так в Vim:

:set ff=unix
:w
Комментарии (3)

Кроме того, есть с открытым исходным кодом утилиты под названием dos2unix и unix2dos доступен, что делать это самое. В Linux они, вероятно, установлен по умолчанию; для системы Windows вы можете скачать их с http://www.bastet.com/][1] среди других.

Комментарии (0)
sed s/^M//g file1.txt > file2.txt

где ^М набирается одновременным нажатием 3 клавиш, <и>сочетание клавиш CTRL + в + М</КБД>

Комментарии (0)

использование утилиты dos2unix, если файл был создан в Windows, использование утилиты mac2unix, если файл был создан в Mac. :)

Комментарии (2)