Как поместить символы новой строки в подстановки регулярных выражений GVim - PullRequest
21 голосов
/ 03 мая 2011

Я использую GVim в Windows 7.

Я хочу узнать, как вводить символы новой строки, используя подстановки регулярных выражений.Для этого я пытаюсь использовать метасимволы \ r и \ n, но замещенный текст не показывает нормальные переводы строк.

Например, в начале у меня есть:

line 1
line 2

Before substitution

Я использую следующее выражение подстановки:

:%s/\n/\n\n/g

ТогдаGVim создает следующий текст:

line 1^@^@line 2^@^@

After substitution with \n as newline characters

Вместо этого, если я использую \ r \ n в выражении подстановки

:%s/\n/\r\n/g

Затем GVim создаетследующий текст:

line 1
^@line 2
^@

After substitution with \r\n as newline

Что это за символы @ @?

Как правильно использовать символы новой строки в выражении подстановки?

Ответы [ 2 ]

29 голосов
/ 03 мая 2011

^ @ - это ноль


По какой-то причине vim хочет видеть \r в тексте замены, чтобы вставить новую строку.(\n в замене вставляет nul.)

Итак, после успешного поиска новых строк, запустив /\n, попробуйте:

s//\r/

Или добавить дополнительную новую строку:

s/$/\r/

На стороне шаблона \r означает фактический (015) символ CR, приводящий к следующей странной команде, когда вы хотите заменить возвраты на новые строки:

s/\r/\r/

Нет, это не запрет.

4 голосов
/ 16 октября 2015

Это

s/\r/\r/

выходит из строя. Но

s/\n/\r/

отлично работает.

...