vim text width reformat

5.9k views Asked by At

I want to reformat my file so the max line width is 79. I did :set tw=79 and gggqG and the results weren't what I expected. When a line is less than 79 col, characters from the line below it move up and lines with over 79 col don't break into two lines.

edit: Well I was semi-mistaken in that it DOES break lines over 79 except in the line with asterisks.

--CONVENTIONS**************************************************************************************

In addition it still moves characters up when the line has <79.

2

There are 2 answers

1
Birei On BEST ANSWER

One possible solution, although not the best one.

Undefine formatexpr and let external fold program to format your text to 79 characters width.

:set formatexpr=
:set formatprg=fold\ -w\ 79

And now:

gg              # Go to beginning of file.
gq              # Format until...
G               # End of file.

And last remove those carriage returns (^M):

:%s/\r//g

In my test it changed some accented characters and some other lines were mangled, but try it yourself. Else you may write your own format function and use it with formatexpr option.

1
kev On

Put empty line between different paragraphs. Then do the reformat.