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

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

Ответы [ 26 ]

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

dos2unix - это утилита командной строки, которая сделает это, или :%s/^M//g, если вы используете Ctrl - v Ctrl - m для ввода ^ M, или вы можете :set ff=unix, и vim сделает это за вас.

Документы для настройки 'fileformat' здесь здесь , а в вики-сайте vim есть исчерпывающая страница о конверсиях, заканчивающихся строкой .

В качестве альтернативы, если вы часто перемещаете файлы назад и вперед, вы, возможно, не захотите их преобразовывать, а скорее выполните :set ff=dos, поэтому vim будет знать, что это файл DOS, и будет использовать соглашения DOS для окончания строк.

249 голосов
/ 18 сентября 2008

Изменить окончания строк в представлении:

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix

Это также может быть использовано в качестве операции сохранения (: один только w не сохранит, используя окончания строк, которые вы видите на экране):

:w ++ff=dos
:w ++ff=mac
:w ++ff=unix

И вы можете использовать его из командной строки:

for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done
153 голосов
/ 30 июля 2009

Я обычно использую

:%s/\r/\r/g

, который кажется немного странным, но работает из-за способа, которым vim соответствует переводам строки. Мне также легче запомнить:)

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

Я предпочитаю использовать следующую команду:

:set fileformat=unix

Вы также можете использовать mac или dos, чтобы соответственно преобразовать ваш файл в формат macintosh или MS-DOS / MS-Windows. И это ничего не делает, если файл уже в правильном формате.

Для получения дополнительной информации см. Справку vim:

:help fileformat
19 голосов
/ 17 сентября 2008
:%s/\r+//g

В Vim он удаляет все возвраты каретки и оставляет только новые строки.

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

:set fileformat=unix для преобразования из dos в unix.

13 голосов
/ 17 сентября 2008
9 голосов
/ 15 декабря 2009

dos2unix может напрямую изменять содержимое файла.

Вы можете напрямую использовать его в файле без необходимости временного перенаправления файлов.

dos2unix input.txt input.txt

Выше используется предполагаемая клавиатура США. Используйте параметр - 437 для использования клавиатуры Великобритании.

dos2unix -437 input.txt input.txt
7 голосов
/ 01 января 2014

Конвертировать каталог файлов из DOS в Unix

Используя командную строку и sed, найдите все файлы в текущем каталоге с расширением ".ext" и удалите все "^ M"

@ https://gist.github.com/sparkida/7773170

find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;

также, как упомянуто выше ^ M = Ctrl + V + Ctrl + M (не просто введите символ каретки "^" и M )

6 голосов
/ 24 мая 2012
tr -d '\15\32' < winfile.txt > unixfile.txt

(см .: http://kb.iu.edu/data/acux.html)

...