3

Я написал документ в vim с textwidth = 80. Теперь я хотел бы вставить этот документ в libreoffice для форматирования. Проблема в том, что разрывы строк. В libreoffice строки слишком короткие из-за новых строк, вставленных vim после 80 символов.

Я разделяю абзацы, используя два символа новой строки (то есть дважды нажимая return). Можно ли как-нибудь удалить все одиночные символы \n, сохранив символы \n \n?

3 ответа3

3

Вы можете использовать VipJ в каждом абзаце:

  • V: начать аналогичный выбор.
  • ip: выбрать весь абзац.
  • J: соединяет линии вместе.

Поскольку вы разделяете каждый абзац двойной новой строкой, мы можем записать макрос, чтобы сделать это для нас автоматически:

qqVipJ2jq

Чтобы объединить N абзацев, просто используйте N @q сейчас.

2

Есть несколько способов сделать это в Vim, но я думаю, что самый простой это:

:set tw=9999
gggqG

Это перемещает курсор на первую строку буфера (gg) и переформатирует (gq) все строки оттуда до последней строки (G). Увидеть

:help gq
0

Что-то вроде этого

:%s/\(\S\)\n/\1
:%s/\n/&&

должно сработать. Ну, это здесь.

Первая замена соответствует "непробельному символу" (он может быть более конкретным), за которым следует новая строка, фиксирующая этот "непробельный символ" для использования в замене (\1). Практически он превращает каждый "абзац" в одну строку.

Второй заменяет каждый символ новой строки двумя символами новой строки. & используется в замене для обозначения "совпадающего текста", поэтому здесь && означает "два символа новой строки". Можно написать :%s/\n/\r\r но && короче.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .