Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

vim text width reformat

Tags:

vim

text-width

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.

like image 588
deadghost Avatar asked Jan 11 '12 13:01

deadghost


2 Answers

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.

like image 97
Birei Avatar answered Sep 30 '22 22:09

Birei


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

like image 23
kev Avatar answered Sep 30 '22 22:09

kev