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

Замена возврата каретки ^ M с помощью Enter

Я знаю, как удалить ^M в моих файлах (%s/^M//g), но это одна строка, которую я хотел бы заменить ^M на ввод... что вводить символ в VIM (использовать в режиме commnad-line).

4b9b3361

Ответ 1

Вы можете заменить один символ, используя r<CR> в обычном режиме.
Или вы можете ввести "возврат" в режиме командной строки, набрав <C-v><CR>.

Ответ 2

Чтобы заменить символ возврата каретки (который равен <C-m>) с символом строки (который является символом разрыва строки Unix), вы должны запустить немного странную команду:

%s/\r/\r/g

Похоже, если он ничего не делает, но в регулярных выражениях и строках с двойными кавычками возвраты каретки представлены с помощью \r и линейных фидов с \n, а в заменяющей части команды: s и substitute() они означают обратное.

Обратите внимание, что в терминале Enter выдается <C-m>, поэтому ваш первоначальный запрос недействителен.

Ответ 3

:%s/\r//g работает только тогда, когда:

  • set ff=unix, который по завершении автоматически преобразует все CRLF в LF

  • set ff=dos и CR является изгоем char, которому не предшествует LF, например, вставлен с C-V C-M.

    CR в парах LF CR не будет найден.

Следовательно, если вы хотите преобразовать все LF CR в LF, вы должны использовать:

:set ff=unix
:w

Ответ 4

В сеансе vim попробуйте:

:%s/^M//g

Где ^M достигается при помощи ctrl+V+M нажатий клавиш.

Ответ 5

Подобно @ZyX и @anubhava, но, предполагая, что вы просто пытаетесь удалить жуткий возврат каретки из файла Windows, будет достаточно:

:%s/\r//g