^ M в конце каждой строки в vim - PullRequest
123 голосов
/ 10 июля 2009

Когда я редактирую исходные файлы, используя vim и другие редакторы, иногда в конце строки я получаю эти символы ^ M в конце каждой строки. Я думаю, что это как-то связано с редактированием файла в Windows, а затем в Linux. Как я могу удалить все это автоматически?

Ответы [ 9 ]

125 голосов
/ 10 июля 2009

В качестве команды введите

:%s/^M$//

(чтобы получить ^ M, нажмите ^ V ^ M, где ^ - это CTRL на большинстве клавиатур)

81 голосов
/ 05 декабря 2011

Один простой способ вырезать окончания строки DOS - использовать опцию ff:

:set ff=unix
:wq

Теперь ваш файл вернулся к старому-доброму Unix-пути.

Если вы хотите добавить окончания DOS (чтобы принтер был доволен или передавал файлы друзьям из Windows, у которых нет хороших инструментов), вы можете легко пойти в обратном направлении:

:set ff=dos
:wq
33 голосов
/ 11 июля 2009

Вы можете сделать это:

:set fileformats=dos

Он будет скрывать ^M, не касаясь файла.

16 голосов
/ 10 июля 2009

Есть программа под названием dos2unix , которая должна отменить их для вас. В Windows используются разные символы конца строки, поэтому это происходит.

6 голосов
/ 31 октября 2011

Это сработало для меня в файле, в котором все было в одной строке:

Сначала найди все совпадения

:%s/^M//

(чтобы получить ^M, нажмите ^ V ^ M, где ^ на большинстве клавиатур - Ctrl )

Затем заменить на новые строки

:%s//\r/g

Комбинированная команда будет:

:%s/^M/\r/g
2 голосов
/ 11 июля 2009

Я склонен пропустить поврежденные файлы через fromdos перед тем, как открыть их снова. fromdos является частью пакета tofrodos .

1 голос
/ 10 июля 2009

Причиной проблемы может быть передача по FTP. Когда вы отправляете эти файлы по FTP из одного ящика в другой, обязательно используйте передачу ASCII. Используйте команду "ASC."

0 голосов
/ 17 декабря 2014

mcedit: shift + f2, установить формат Unix (LF), хорошо

0 голосов
/ 31 октября 2011
" put this in your ~/.vimrc file and :source ~/.vimrc
" then you can do: Dos2Unix
" dos2unix ^M
fun! Dos2unixFunction()
    let _s=@/
    let l = line(".")
    let c = col(".")
    try
        set ff=unix
        w!
        "%s/\%x0d$//e
    catch /E32:/
        echo "Sorry, first save the file."
    endtry
    let @/=_s
    call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...