Depois de ler help textwith
e help fo-table
, eu esperava que quando eu definir
set textwidth=20 " for demonstration
set formatoptions=tcq
a inserção de texto sempre acabaria com a quebra de uma linha, mas esse não é o caso. A quebra ocorre apenas no (ou antes) meu cursor. E se eu colar, o embrulho não acontece.
Exemplo (Vim 7.4):
12345678901234567890
This is a long line
A linha será quebrada automaticamente se eu clicar A
e começar a digitar.
Mas se eu pressionar 02wi
e digitar "still", não será possível:
12345678901234567890
This is still a long line
Eu tenho que digitar outros 7 caracteres antes de quebrar, e o problema continua na próxima linha:
12345678901234567890
This is still more <-- it wraps here
typing and again a long line
A colagem também não aciona uma quebra:
12345678901234567890
This is a long line This text is pasted and not wrapped
Eu acho que o que eu quero é set fo+=a
mas isso se aplica no nível do parágrafo, enquanto eu não quero que a formatação automática de uma linha se espalhe para outras linhas.
Ou estou faltando uma opção?
Para ficar claro, após o lançamento vim -u NONE
, é isso que digito (menos comentários):
:set textwidth=20<CR>
:set formatoptions=tcq<CR>
iThis is a long line<ESC>
02wistill <ESC> " no wrap happens, but I'd like it to
u
:let @r = "This text is pasted and not wrapped"<CR>
$"rp " no wrap happens, but I'd like it to
fonte
vim -u NONE
para impedir o carregamento de um arquivo vimrc. Isso resolve o problema para você? Qual versão do Vim você está usando?paste
definido acidentalmente? Tente:set paste?
paste
não está definido. Quandopaste
está definido, nenhuma quebra acontece.Respostas:
Me deparei com uma solução parcial, usando
formatoptions=tcqaw
. Basicamente, você ainda quebra automaticamente os parágrafos, mas um parágrafo termina quando a linha não possui espaço em branco à direita, o que é adequado para muitos casos.Usando seu exemplo (com uma ligeira modificação, sem desfazer e usando "
<SPACE>
This ..."), obtenho este resultado:fonte