Я не могу заменить разрывы строк в vim и iterm

258
clumsyjedi

В Vim в iTerm я часто сталкиваюсь с проблемами, связанными с переносами строк. Например, если у меня есть файл, содержащий страшные ^ M, большинство онлайн-уроков скажут, что для выполнения замены я использую обычный поиск и замену файла, например:

%s/^M/^J/g 

Моя проблема в том, что я не могу ввести ^ M - когда я набираю ^ V ^ M (control + V control + M), то фактически вставляется ^ J. Результатом этой замены является "не обнаружено случаев". Я делаю что-то не так или VIM или iTerm могут быть неправильно настроены?

Некоторая дополнительная информация:

  1. Это также происходит /usr/bin/viв приложении терминала, когда set compatibleвключен
  2. Вот пример строки через hexdump, которая показывает разрывы строк после закрывающих квадратных скобок в виде шестнадцатеричного символа 0d, который, я считаю, равен ^ M

00000120 3c 2f 6c 6f 63 3e 0d 20 20 3c 2f 75 72 6c 3e 0d |</loc>. </url>.|

1
I should point out as well, using the hex code for `0d` also produces ^J ie `^VX0d` produces ^J clumsyjedi 9 лет назад 0
^ V с последующим вводом работает? SΛLVΘ 9 лет назад 0
То же самое, это показывает ^ J clumsyjedi 9 лет назад 0

1 ответ на вопрос

0
clumsyjedi

Found the culprit, looks like it was the pathogen plugin vim-sensible. I simply deleted pathogen plugins from ~/vim/bundle and re-tested until it worked.

Спасибо за закрытие цикла по вашему вопросу. Можете ли вы немного расширить свой ответ, чтобы объяснить, что вы сделали для его решения? fixer1234 9 лет назад 0
Я действительно не очень разбираюсь в этом вопросе. Я удалил плагины патогенов из ~ / vim / bundle и повторно протестировал, пока он не заработал. Предположительно, vim-sensible считает целесообразным преобразовывать окончания строк в пользовательском вводе (то есть вставленных данных, вводе с клавиатуры) из окон в стиль Unix. clumsyjedi 9 лет назад 0