vim text width reformat
Asked Answered
W

2

9

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.

Webster answered 11/1, 2012 at 13:11 Comment(1)
It works for me following your instructions, but check that lines are breakable. For example, urls will keep their original format after that width.Nesto
N
9

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.

Nesto answered 11/1, 2012 at 14:34 Comment(1)
That worked although not perfect. Words got cut in half but that's not a huge deal.Webster
I
1

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

Infeasible answered 11/1, 2012 at 13:16 Comment(1)
It doesn't send characters up a line when I add empty lines between each pair of lines however it doesn't actually split my longer lines into 79 col lines.Webster

© 2022 - 2024 — McMap. All rights reserved.