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