Vim отмена форматирования ширины текста

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

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

20
задан Moyamo
01.04.2023 10:42 Количество просмотров материала 3018
Распечатать страницу

3 ответа

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

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

должны работать. Хорошо, это действительно здесь.

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

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

0
отвечен romainl 2023-04-02 18:30

можно использовать VipJ по каждому пункту:

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

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

qqVipJ2jq

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

3
отвечен Symaxion 2023-04-02 20:47

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

:set tw=9999
gggqG

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

:help gq
2
отвечен garyjohn 2023-04-02 23:04

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх