Search code examples
vimword-wrap

Why Vim is assembling short lines when it should just break the long ones?


I am trying to edit a file using Vim. However, I have just started to use this editor.

This is the text that I am willing to fix (it is in portuguese, but this fact is irrelevant to my doubt):

--- 
ENUM Questão 1

AREA ETHICS

Janaína é procuradora do município de Oceanópolis e atua, fora da carga horária demandada pela função, como advogada na sociedade de advogados Alfa, especializada em Direito Tributário. A profissional já foi professora na universidade estadual Beta, situada na localidade, tendo deixado o magistério há um ano, quando tomou posse como procuradora municipal.

As you see, the phrase starting with "Janaina é..." is too big. I am trying to make everything have 80 columns.

Hence, I did:

:set textwidth=80  

And, in visual mode with all the txt selected, I did:

gq

This is the final output:

--- ENUM Questão 1

AREA ETHICS

Janaína é procuradora do município de Oceanópolis e atua, fora da carga horária
demandada pela função, como advogada na sociedade de advogados Alfa,
especializada em Direito Tributário. A profissional já foi professora na
universidade estadual Beta, situada na localidade, tendo deixado o magistério há
um ano, quando tomou posse como procuradora municipal.

The final result is close to what I want. The only problem is the change from

--- 
ENUM Questão 1

to

--- ENUM Questão 1

I thought that :set textwidth=80 and :set columns=80 were commands made to break lines which were too long. But, for some reason, this command is assembling the short line with --- and the line with ENUM Questão [num]

Why is this happening? How can I solve this?

Thanks.


Solution

  • gq can do a lot of things, depending on the formatexpr, formatprg or most possibly the formatoptions setting. see :h gq.

    I would use the folloging regex:

    :%s/.\{80}/&\r/g
    

    *Note: there is also textwrap in vim, which may help you (:set wrap)