ВИМ показывает на каждый конец строки ^м
Как мне сделать, чтобы заменить это с 'обычных' разрыв строки?
Команда #
:%s/<Ctrl-V><Ctrl-M>/\r/g
Где в <Ctrl " и " V><сочетание клавиш Ctrl-м>
означает тип <и>сочетание клавиш Ctrl</роз>+<и>в</роз> потом <и>сочетание клавиш Ctrl</роз>+<и>м</роз>.
<БР/>
<БР/>
:%s
замены, % = всех строк
<Ctrl-V><Ctrl-M>
^M символов (сочетание клавиш ctrl-v-это ВИМ способ написания клавиши Ctrl ^ символ и Ctrl-м пишет м после регулярного выражения, в результате чего в ^М специальный символ)
/\r/
с новой строки (\Р
)
g
И сделать это глобально (а не только первое вхождение в строку).
На Linux и Mac OS, то следующие работы,
:%s/^V^M/^V^M/g
где ^в^М
означает тип <и>на Ctrl</роз>+<и>в</роз>, потом <и>сочетание клавиш Ctrl</роз>+<и>м</роз>.
<суб>Примечание: на Windows, вы, вероятно, хотите использовать ^м
вместо ^в
, так как по умолчанию ^в
сопоставляется вставить текст.</суб>
В ВИМ
, посмотри на формат файла — DOS или Unix:
в <ы> У:Установите тип файла=ОС UNIX
</с>
установите значение=ОС UNIX`
Файл будет записан обратно без возврата каретки (CR, ^м) символов.
Это единственное, что работал для меня:
:е ++ФФ=Дос
Нашли его по адресу: http://vim.wikia.com/wiki/File_format
Файл я создал с BBEdit видел в MacVim показывал кучу возвращает строку^м
вместо обычных. Следующую строку заменить решена проблема - надеюсь, что это помогает:
:%s/\r/\r/g
Это'ы интересно, потому что я'м заменять переносы строки с таким же характером, но я полагаю, что ВИМ просто нужно, чтобы получить свежий \р для корректного отображения. Я'd быть заинтересованы, чтобы знать базовую механику того, почему это работает.
Во-первых, использовать:установить ФФ?`, чтобы выяснить формат файла свой файл.
Я предполагаю, что это может быть в Unix, то проблема в том, что файл был создан с
значение=Досдобавить " и^М^Ж" на конце линии, но прочитала с flieformat=ОС UNIX
только удаление " и^Ж" из конца строки, оставляя " и^М" и есть.
Просто введите :е ++ФФ=DOS и в командной строке Vim В изменить файл'формата S из Unix в DOS. Это должно решить проблему. Если нет,
:%с/\р//г` должны помочь вам.
для того, чтобы получить ^м характером, чтобы соответствовать я должен был визуально выделить его, а затем использовать ОС скопировать в буфер обмена команду, чтобы восстановить его. Вы можете проверить это, выполнив поиск для персонажа, прежде чем пытаться команду заменить.
/^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.
Ни один из этих работал для меня, поэтому я попытался это, который работал:
тип :%ы/
пресс <и>Ctrl " и " V</КБД><и>на Ctrl-м</роз>
типа //Г
пресс <и>введите</КБД>
Так что в целом команда в Vim должна выглядеть :%ы/^г//г
Что это делает: :%S
В (найти и заменить) /^м/
(этот символ) /
(не символов) и G
(во всем мире).
^М извлекается <и>на Ctrl</роз>+<и>в</роз> и <и>м</роз>, так что
s/^M//g
Я сделал это с помощью sed:
sed -и-Е 'ы/\р/\н/Г' имя_файла
Как насчет просто:
:%с/\р//г
Что сработало для меня.
Это нужно просто почистить конце линии все линии, он удаляет ^м и, что'с его.
Есть много других ответов на этот вопрос, но все же, как лучше для меня, так как мне нужно решение командной строки:
vim -u NONE -c 'e ++ff=dos' -c 'w ++ff=unix' -c q myfile
Объяснение:
:е ++ФФ=Дос
, чтобы обновить весь файл в качестве окончания строки DOS.:ш ++ФФ=ОС UNIX
, чтобы записать файл, используя строки Unix окончаний<и>сочетание клавиш Ctrl</роз>+<и>м</роз> сокращает мое окно, но <и>клавиши Ctrl</роз>+<и>введите</роз> на самом деле вставляет ^м
характер. Я также должен был убедиться не поднять <и>на Ctrl</роз> ключ между нажатиями.
Так что решение для меня было:
:%s/<Ctrl-V><Ctrl-Enter>/\r/g
Где в <Ctrl " и " V><международной научно-технической конференции>
средства для нажмите и удерживайте <и>сочетание клавиш Ctrl</КБД и GT; нажмите и отпустите <и>в</КБД и GT; нажмите и отпустите <и>введите</роз>, а затем отпустите <рэоз>сочетание клавиш Ctrl</КБД>.
Описанное выше решение будет добавлять дополнительную строку между существующими строками, потому что уже невидимый \р
после ^м
.
Чтобы предотвратить это, вы хотите, чтобы удалить символы ^м
без их замены.
:%s/<Ctrl-V><Ctrl-Enter>//g
Где %
означает "в этот буфер, и" ы
означает "подставить" Ну /
означает "(найти) следующим образом:" ПО в <Ctrl " и " V><международной научно-технической конференции>
ссылается на клавиши нажимать, чтобы получить ^м
(см. выше), //
означает "разбитого корыта" и (или "с рисунком между этими двумя слешами, где пусто"), и Г
- Это флаг смысл-то ", то" глобально; в отличие от первого вхождения в строку.
В моем случае
Ничего, работал, у меня 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,
Этот работал для меня:
строка\Н
окончание)Так в Vim:
:set ff=unix
:w
Кроме того, есть с открытым исходным кодом утилиты под названием dos2unix и unix2dos доступен, что делать это самое. В Linux они, вероятно, установлен по умолчанию; для системы Windows вы можете скачать их с http://www.bastet.com/][1] среди других.
sed s/^M//g file1.txt > file2.txt
где ^М набирается одновременным нажатием 3 клавиш, <и>сочетание клавиш CTRL + в + М</КБД>