How can I wrap text to some length in Vim?
:set textwidth=30
Using fold(1) is one possibility:
:%!fold -w5
Result:
aaaaa
aaaaa
aaa
bbbbb
bbbbb
bbb
ccccc
ccccc
ccc
You can actually do two things:
- Let vim format (i.e.change) your text to have shorter lines, by inserting linebreaks
- Leave lines as they are, but display them wrapped
Which do you want?
Option 1 would be achieved by setting textwidth
(for example :set textwidth=30
(from Swaarop's answer)). Then you can reformat your text by highlighting it (in visual mode) and typing gq
. (textwidth
can be abbreviated as tw
, thus :set tw=30
.)
Option 2 can be toggled by running :set wrap
/ :set nowrap
. This will wrap lines which are too long for the window.
Both are independent.
Once you set 'textwidth', you can select text with visual mode and press gq to wrap it nicely (you can also use Q on some older/legacy configurations).
A few useful tips:
gqq (wrap the current line)
gq} (wrap this 'paragraph', i.e. until the next blank line)
:h gq