Из вопроса Как заменить символ для новой строки в Vim? , Вы должны использовать \ r при замене текста на новую строку, как это
:%s/%/\r/g
Но при замене конца строки и новой строки для символа, вы можете сделать это следующим образом:
:%s/\n/%/g
Какой раздел руководства документирует это поведение и каковы причины этого?
%
нужен поиск и замена?:s
применяется только подстановка к текущей строке.:%s
делает это адрес всего файла. Больше .Ответы:
Из vim docs по шаблонам :
источник
С http://vim.wikia.com/wiki/Search_and_replace :
источник
:h :s%
, особенно последний абзац. (через:h :s
)Другим аспектом этого является то
\0
, что, как правило, NULL,s//\0/
означает «весь подобранный образец». (Который, между прочим, избыточен с, и дольше, чем&
).\0
чтобы означатьNULL
, поэтому вы используете\n
\n
чтобы означать\n
, поэтому вы используете\r
.\r
чтобы иметь в виду\r
, но я не знаю, кто хотел бы добавить этот символ специально.-☈
источник
\n
в поиске и замене есть разные значения. Фантастический ответ.:help NL-used-for-Nul
источник
Прежде всего, откройте
:h :s
для просмотра раздел «4.2 Заменитель» документации по «Изменению». Вот что принимает команда:Обратите внимание на описание
pattern
иstring
Итак, теперь вы знаете, что шаблон поиска и шаблон замены соответствуют различным правилам. Если вы перейдете по ссылке на
|pattern|
, вы попадете в раздел, в котором объясняются все шаблоны регулярных выражений, используемые в Vim.Между тем,
|sub-replace-special|
вы переходите к подразделу «4.2 Замена», который содержит шаблоны для замены, среди которых -\r
разрыв строки / разбиение.(Ярлык к этой части руководства есть
:h :s%
)источник