Как поместить символы новой строки в замены регулярных выражений GVim
Я использую 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]()
Что это за символы @@?
Как правильно использовать символы новой строки в выражении замещения?
Ответы
Ответ 1
^ @является nul
По какой-то причине vim хочет увидеть \r
в тексте замены, чтобы вставить новую строку. (\n
в замене вставляет nul.)
Итак, после успешного поиска новых строк, запустив /\n
, попробуйте:
s//\r/
Или добавить дополнительную строку новой строки:
s/$/\r/
На стороне рисунка \r
означает фактический символ (015) CR, приводящий к следующей странно выглядящей команде, когда вы хотите заменить возврат символами новой строки:
s/\r/\r/
Нет, это не без-op.
Ответ 2
Это
s/\r/\r/
не удается.
Но
s/\n/\r/
отлично работает.