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

StackOverflow https://stackoverflow.com/questions/799417

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

Вы также можете запустить:

:e ++ff=dos

Чтобы удалить ^M:Видишь Формат файла – Vim Tips Wiki.

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

:g/^M$/s///

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

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

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

:%s/\r/\r/g

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

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

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

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

На самом деле то, что сработало у меня (в 64-разрядной Windows, gVIM:7.2 ) был:

:set ffs=dos

не просто:ff

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

:%s/^M/\r/g

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

Вероятно, для многих из вас это немного просто, но на всякий случай это полезно.

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

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

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

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

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

:%s/\r

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

:%s/\r//

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

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

:%s/\r/\r/g

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top