Подтвердить что ты не робот

GVim показывает возврат каретки (^ M), даже если файловый режим явно DOS

Я использую gVim для Windows. Мой код показывает символы ^M в конце строк. Я использовал :set ff=dos безрезультатно. Символы ^M остаются для существующих строк, но не отображаются для новых строк, которые я вводил. Я переключил режимы на mac (показывает ^J символы) и unix (также показывает символы ^M) и обратно в dos. Кто-нибудь еще видел это?

4b9b3361

Ответ 1

Это происходит, когда у вас есть смесь концов строк Windows и Unix. Если у вас 100 строк, 99 -\r\n, а один -\n, вы увидите 99 символов. Исправление состоит в том, чтобы найти одну строку и заменить ее. Или запустите dos2unix в файле. Вы можете заменить окончание строки Windows:

:%s/\r\(\n\)/\1/g

Ответ 3

Обычно я использую следующее для очистки окончаний строки:

:g/^M$/s///

Чтобы получить ctrl-M, я обычно набираю ctrl-Q, затем ctrl-M, и он помещает его. (В некоторых средах это может быть ctrl-V, затем ctrl-M.) Я не знаю, почему, но Я считаю, что легче запомнить, чем rq.

Не забудьте также сделать :set ff=dos, иначе вы закончите сохранение с окончанием строки UNIX.

Ответ 4

Я знаю, что это уже ответили, но трюк, который я использую,

:%s/\r/\r/g

Это заменяет возвраты каретки unix с окнами CRLF. Просто добавил, если у кого-то еще были проблемы.

Ответ 5

Вы можете игнорировать эти символы!

поместите это в свой vimrc

совпадение Игнорировать /\ r $/

Ответ 6

На самом деле то, что сработало для меня (в 64-битных окнах gVIM: 7.2), было:

:set ffs=dos

не просто: ff

Ответ 7

Запуск Vim 7.3 в Windows 7. Я использовал следующую команду:

:%s/^M/\r/g

Чтобы создать ^ M, я набрал CTRL + Q, затем CTRL + M.

Ответ 8

Это, вероятно, немного просто для многих из вас, но по возможности это полезно.

Основываясь на ответе richq, я нашел, что они полезны в моем vimrc. Обратите внимание, что второй из них закомментирован нормально, потому что он немного сбивает с толку, так как Vim будет ждать, пока другой ход ключа не сработает, если он отобразил команду ex.

function! D2u()
    execute '%s/\r\(\n\)/\1/g'
endfunction
"map d2u :%s/\r\(\n\)/\1/g

Первый запускается путем ввода call D2u() в ex, а второй - нажатием D2u в режиме редактирования.

Ответ 9

Это дополнительные окончания строки CR, обычно из-за использования файла в смешанных системах UNIX/DOS.

Возможно, самый короткий ответ для удаления одного ^ М из конца каждой строки, и я использую:

:%s/\r

что эквивалентно:

:%s/\r//

но косые черты не требуются (они предполагаются).

Ответ 10

пробовал много вещей, но следующие работали

:%s/\r/\r/g

Примечание: используйте g, если вы хотите, чтобы эффект на весь файл