Formatage automatique: retour à la ligne plus tard lors de l'insertion de texte

9

Après avoir lu help textwithet help fo-table, je m'attendais à ce que lorsque je mets

set textwidth=20  " for demonstration
set formatoptions=tcq

puis l'insertion de texte entraînerait toujours le retour à la ligne d'une ligne, mais ce n'est pas le cas. L'habillage ne se produit que sur (ou avant) mon curseur. Et si je colle, l'emballage ne se produit pas du tout.

Exemple (Vim 7.4):

12345678901234567890
This is a long line

La ligne sera automatiquement bouclée si je frappe Aet commence à taper.

Mais si je frappe 02wiet tape "toujours", cela ne se termine pas:

12345678901234567890
This is still a long line

Je dois taper 7 autres caractères avant qu'il ne se termine, puis le problème continue sur la ligne suivante:

12345678901234567890
This is still more <-- it wraps here
typing and again a long line

Le collage ne déclenche pas non plus de bouclage:

12345678901234567890
This is a long line This text is pasted and not wrapped

Je pense que ce que je veux, c'est set fo+=aque cela s'applique au niveau du paragraphe, alors que je ne veux pas que le formatage automatique d'une ligne se propage à d'autres lignes.

Ou ai-je manqué une option?

Pour être clair, après le lancement vim -u NONE, voici ce que je tape (moins de commentaires):

: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
mgiuffrida
la source
1
Cela semble bien fonctionner pour moi. J'ai démarré Vim avec vim -u NONEpour empêcher le chargement d'un fichier vimrc. Est-ce que cela résout le problème pour vous? Quelle version de Vim utilisez-vous?
Martin Tournoij
Non, ça n'aide pas. Vim 7.4 sur Windows et Ubuntu.
mgiuffrida
Est pasteréglé, accidentellement? Try:set paste?
Volker Siegel
@VolkerSiegel no, pasten'est pas défini. Quand pasteest défini, aucun habillage ne se produit.
mgiuffrida

Réponses:

2

Je suis tombé sur une solution partielle, en utilisant formatoptions=tcqaw. Fondamentalement, vous continuez de boucler automatiquement les paragraphes, mais un paragraphe se termine lorsque la ligne n'a pas d'espace blanc de fin, ce qui convient à de nombreux cas.

En utilisant votre exemple (avec une légère modification, pas d'annulation et en utilisant " <SPACE>This ...") j'obtiens ce résultat:

This is still a long  
This is pasted and 
not wrapped
line
Beka
la source