Configurar em qual coluna o `gq` envolve?

9

Por padrão, o uso gqcom um comando de movimento envolve o texto descrito pelo comando de movimento em 79 colunas. (Sou relativamente novo em vi/ vimnão conheço a terminologia correta.) Como posso configurar essa contagem de colunas para que, em vez disso, seja agrupada em um número diferente de colunas?

Por exemplo, suponha que eu tenha este texto:

This is text for illustration.

Gostaria de poder configurar a coluna de quebra automática para 29, para que, se meu cursor estiver na linha e eu o executo, gqipele seja transformado em:

This is text for
illustration.

Estou usando o gVim no Ubuntu GNOME 17.04, se isso faz diferença.


Edição: Estou procurando uma maneira de quebrar manualmente certas seções de texto para o comprimento de linha determinado sem afetar outros, porque há alguns casos em que estou bem em ir além do limite. Para expandir o exemplo anterior, se meu documento estiver assim:

This is text for illustration.

This is some other text for illustration.

E eu corro gqipcom o cursor na primeira linha, gostaria de obter:

This is text for
illustration.

This is some other text for illustration.

Então, se eu começar a digitar uma nova linha abaixo dela, gostaria que essa linha não fosse afetada pelo limite.

Meu caso de uso é escrever documentos do LaTeX: eu gostaria de poder agrupar parágrafos da prosa em um certo número de colunas sob demanda, mas em certos casos em que estou escrevendo equações longas ou tabelas, quero que essas linhas sejam fique mais tempo que o limite.

jdw1996
fonte

Respostas:

6

Você pode fazer isso definindo textwidthe removendo tde formatoptions.

set textwidth=29
set formatoptions-=t

Você também precisa ter a qopção ativada no seu formatoptionsuso gq. Parece estar sempre ativo para mim, mas você pode adicionar um set formatoptions+=qpara estar do lado seguro.

Não deve ser um problema com o seu caso de usuário atual, mas a copção agrupa automaticamente os comentários, por isso, se você não quiser set formatoptions-=c.

Para mais informações, consulte:

:help formatoptions " Not much info.
:help fo-table      " All the options in detail.
gib
fonte
0

Há duas maneiras de fazer isso: definindo 'textwidth'a largura do seu texto em caracteres ou colunas; definindo 'wrapmargin'a largura da margem direita em caracteres ou colunas. Por exemplo, para quebrar seu texto em uma largura de 29 caracteres ou colunas:

set textwidth=29

Vejo

:help 'textwidth`
:help 'wrapmargin'
:help 10.7
garyjohn
fonte
Obrigado pela sua resposta, mas não é exatamente isso que eu estava procurando. Quero ser capaz de envolver manualmente algumas seções do texto sem afetar outras. Para mim, essas duas opções envolvem automaticamente o novo texto inserido. Vou atualizar a pergunta para explicar melhor isso.
Jdw1996 3/07
O Vim não possui uma maneira integrada de fazer isso. O gqcomando não fornece a configuração da largura do envoltório por chamada; segue textwidthe textwidthse aplica a todo o buffer, não apenas a certas linhas. Se você estiver satisfeito com o agrupamento manual das seções que deseja, você pode escrever uma função que: salve o valor atual de textwidth; definido textwidthcomo 29; executar gqnas linhas selecionadas; restaure o valor de textwidth. Em seguida, atribua esta função a formatexpr. Como alternativa, você pode usar um programa externo, como fmtformatar linhas selecionadas.
21417 GJJJ
OK eu vejo. Vou procurar escrever essa função. Obrigado!
Jdw1996 3/07