Я знаю, как удалить ^M
в моих файлах (%s/^M//g
), но это одна строка, которую я хотел бы заменить ^M
на ввод... что вводить символ в VIM (использовать в режиме commnad-line).
Замена возврата каретки ^ M с помощью Enter
Ответ 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