Конвертируйте окончания строки DOS в окончания строки Linux в vim - PullRequest
648 голосов
/ 17 сентября 2008

Если я открываю файлы, созданные в Windows, все строки заканчиваются на ^M.
Как удалить все эти символы сразу?

Ответы [ 26 ]

5 голосов
/ 18 февраля 2012

Следующие шаги могут преобразовать формат файла для DOS в Unix:

:e ++ff=dos  Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix    This buffer will use LF-only line endings when written.[A 2]
:w   Write buffer using unix (LF-only) line endings.

Ссылка: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix

5 голосов
/ 17 сентября 2008

С помощью следующей команды:

:%s/^M$//g 

Получите ^M для отображения типа Ctrl V затем Ctrl M . Ctrl V велит Vim взять следующий введенный символ буквально.

4 голосов
/ 15 декабря 2016

Вы можете использовать:

vim somefile.txt +"%s/\r/\r/g" +wq

или dos2unix utility.

4 голосов
/ 30 апреля 2016

Я нашел очень простой способ: открыть файл с помощью nano: nano file.txt

Нажмите CTRL + O для сохранения, но перед нажатием введите , нажмите: ALT + D для переключения между окончаниями строк DOS и Unix / Linux, или: ALT + M для переключения между окончаниями строк Mac и Unix / Linux и затем нажмите Enter для сохранить и CTRL + X , чтобы выйти.

4 голосов
/ 13 июля 2012

Комментарий о появлении ^ M - вот что сработало для меня. Просто набрав "^ M" в моем vi ничего не получилось (не найдено). Последовательность CTRL + V CTRL + M сделала это отлично, хотя.

Моя рабочая команда замещения была

:%s/Ctrl-V Ctrl-M/\r/g

и на моем экране это выглядело так:

:%s/^M/\r/g
4 голосов
/ 17 сентября 2008
:g/Ctrl-v Ctrl-m/s///

Ctrl M - это символ \r, или возврат каретки, который добавляют окончания строки DOS. Ctrl V указывает vim вставить буквенный Ctrl M символ в командной строке.

В целом эта команда заменяет все \r ничем, удаляя их с концов строк.

3 голосов
/ 17 сентября 2008

Вы можете использовать следующую команду:
:%s/^V^M//g
, где '^' означает использование клавиши CTRL .

2 голосов
/ 13 февраля 2015
Команда

ниже используется для переформатирования всех файлов .sh в текущем каталоге, я проверял это на моей ОС Fedora.

for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done
1 голос
/ 17 октября 2018

Для запуска непосредственно в консоли Linux: vim file.txt +"set ff=unix" +wq

1 голос
/ 17 января 2018

В vim введите:

:w !dos2unix %

Это передаст содержимое вашего текущего буфера в команду dos2unix и запишет результаты поверх текущего содержимого. Vim попросит перезагрузить файл после

...