Ответ 1
\r
соответствует <CR>
\n
соответствует концу строки - При совпадении в строке вместо текст буфера - буквальная строка новой строки символ соответствует.
Из вопроса Как заменить символ для новой строки в Vim?. Вы должны использовать \r при замене текста для новой строки, например
:%s/%/\r/g
Но при замене конца строк и строк новой строки для символа вы можете сделать это следующим образом:
:%s/\n/%/g
В каком разделе руководства указаны эти поведения, и какова их аргументация?
\r
соответствует <CR>
\n
соответствует концу строки - При совпадении в строке вместо текст буфера - буквальная строка новой строки символ соответствует.
Из http://vim.wikia.com/wiki/Search_and_replace:
При поиске
...
\n
- это символ новой строки,\r
-CR
(возврат каретки =Ctrl-M
=^M
)При замене
...
\r
является символом новой строки,\n
является нулевым байтом (0x00
).
Другим аспектом этого является то, что \0
, который традиционно является NULL, берется в
s//\0/
означает "весь согласованный шаблон". (Что, кстати, избыточно и длиннее, чем &
).
\0
для обозначения NULL
, поэтому вы используете \n
\n
для обозначения \n
, поэтому вы используете \r
.\r
для обозначения \r
, но я не знаю, кто захочет добавить это char специально.-☈
:help NL-used-for-Nul
Техническая информация:
<Nul>
символы в файле сохраняются как<NL>
в памяти. На дисплее они отображаются как "^@
". Перевод осуществляется при чтении и письме файлы. Чтобы соответствовать<Nul>
с шаблоном поиска, вы можете просто ввести [email protected] или " CTRL-V 000". Вероятно, это именно то, что вы ожидаете. Внутри символ заменяется на<NL>
в шаблоне поиска. Что необычно что набрав CTRL-V CTRL-J также вставляет a<NL>
, таким образом, также ищет a<Nul>
в файле. {Vi не может обрабатывать символы<Nul>
в файле вообще}
Прежде всего, откройте :h :s
, чтобы увидеть раздел "4.2 Заменить" документации на "Изменить". Здесь команда принимает:
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
Обратите внимание на описание pattern
и string
Для
{pattern}
см.|pattern|
.{string}
может быть буквальной строкой или что-то еще особый; см.|sub-replace-special|
.
Итак, теперь вы знаете, что шаблон поиска и шаблоны замены следуют различным правилам.
Если вы переходите по ссылке на |pattern|
, вы попадаете в раздел, который объясняет все шаблоны регулярных выражений, используемые в Vim.
Между тем |sub-replace-special|
приведет вас к подразделу "4.2 Substitute", который содержит шаблоны для подстановки, среди которых \r
для разрыва строки/разделения.
(Ярлык для этой части руководства :h :s%
)