Как я могу обернуть текст на некоторую длину в Vim?
-
05-07-2019 - |
Вопрос
Давайте поговорим об относительных мерах.Мой Vim выглядит так:
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
etc
хотелось бы поменьше:
aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc
Как я могу это получить?И как мне управлять длиной такого блока?
Решение
На самом деле вы можете сделать две вещи:
<Ол>Что вы хотите?
Вариант 1 будет реализован установкой textwidth
(например, : set textwidth = 30
(из ответа Swaarop)). Затем вы можете переформатировать текст, выделив его (в визуальном режиме) и введя gq
. ( textwidth
может быть сокращено до tw
, поэтому : set tw = 30
.)
Вариант 2 можно переключить, запустив : set wrap
/ : set nowrap
. Это приведет к переносу строк, которые слишком длинны для окна.
Оба независимы.
Другие советы
После того как вы установили «текстовую ширину», вы можете выбрать текст в визуальном режиме и нажать gq, чтобы красиво его обернуть (вы также можете использовать Q в некоторых старых / старых конфигурациях).
Несколько полезных советов:
gqq (wrap the current line)
gq} (wrap this 'paragraph', i.e. until the next blank line)
:h gq
Использованиеfold(1) является одной из возможностей:
:%!fold -w5
Результат:
aaaaa
aaaaa
aaa
bbbbb
bbbbb
bbb
ccccc
ccccc
ccc
:set textwidth=30
Если у вас есть текст без пробелов, который вы хотите разбить на определенную длину, нет необходимости использовать внешние fold
и не пишите свой собственный formatexpr
.
:%s/\(.\{80\}\)/\1\r/g
разорвет все строки по 80 символов.