Question

Let's speak of relative measures. My Vim looks like:

aaaaaaaaaaaaa 
bbbbbbbbbbbbb 
ccccccccccccc 
etc

I would like it to be smaller:

aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc

How can I get it? And how can I manage setting the length of such a block?

Was it helpful?

Solution

You can actually do two things:

  1. Let vim format (i.e.change) your text to have shorter lines, by inserting linebreaks
  2. 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.

OTHER TIPS

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

Using fold(1) is one possibility:

:%!fold -w5 

Result:

aaaaa
aaaaa
aaa 
bbbbb
bbbbb
bbb 
ccccc
ccccc
ccc
:set textwidth=30

If you have text without spaces that you want to break at a certain length, it is neither necessary to use external fold nor write your own formatexpr.

:%s/\(.\{80\}\)/\1\r/g

will break all lines at 80 chars.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top