Как переформатировать текст "gq" в одну строку в формате абзаца в Vim - PullRequest
9 голосов
/ 21 мая 2010

У меня есть несколько текстовых файлов, ранее отформатированных в vim с использованием "gggqG". Теперь мне нужно преобразовать их в одну строку в формате абзаца. Я видел способ (с помощью команды: g) сделать это раньше, но я забыл об этом. Кто-нибудь знает?

Ответы [ 3 ]

13 голосов
/ 21 мая 2010

Мне известны два подхода:

  • Установить текстовую ширину на что-то большое и переформатировать:

    :set tw=1000000
    gggqG
    
  • Использовать замену (это более уместно, если вы хотите сделать это в отображении):

    :%s/.\zs\n\ze./ /
    

Объяснение последнего:

:%s        " Search and replace across the whole file
/          " Delimiter
.\zs\n\ze. " Look for a character either side of a new-line (so ignore blank lines).
           " The \zs and \ze make the replacement only replace the new-line character.
/ /        " Delimiters and replace the new-line with a space.
2 голосов
/ 21 мая 2010

Если ваши текстовые абзацы разделены пустой строкой, это похоже на работу:

:g!/^\s*$/normal vipJ

:g глобальный (многократный повтор)

!/^\s*$/ соответствует всем строкам, кроме пустых и тех, которые содержат только пробелы.

normal входит в «нормальный» режим

vip визуально выбрать внутренний абзац

J объединить строки

0 голосов
/ 21 мая 2010

Может быть, вы должны установить текстовую ширину на очень большое значение (например, 99999999) (0 по какой-то причине не работает) и использовать gggqG?

// Я не могу сказать вам способ переформатировать ваш абзац с помощью :g, не зная точно, что это за абзац. Может быть, кто-то еще может.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...