Pourquoi ne puis-je pas empêcher vim d'encapsuler mon code?

116

Je ne peux pas empêcher vim d'encapsuler mon code Python. Si j'entre :set nowrapcomme un champion, mais ça s'enroule toujours.

Je peux frapper Jpour unir les lignes de code séparées, donc il semble qu'un vrai retour chariot est inséré. Je ne comprends tout simplement pas pourquoi ni comment l'arrêter.

David Berger
la source
15
:set nowrapl'empêche seulement d'encapsuler l'affichage des lignes, pas d'insérer des sauts de ligne.
rampion

Réponses:

115
'textwidth' 'tw'        number  (default 0)
                        local to buffer
                        {not in Vi}
        Maximum width of text that is being inserted.  A longer line will be
        broken after white space to get this width.  A zero value disables
        this.  'textwidth' is set to 0 when the 'paste' option is set.  When
        'textwidth' is zero, 'wrapmargin' may be used.  See also
        'formatoptions' and |ins-textwidth|.
        When 'formatexpr' is set it will be used to break the line.
        NOTE: This option is set to 0 when 'compatible' is set.


'wrapmargin' 'wm'       number  (default 0) 
                        local to buffer
        Number of characters from the right window border where wrapping
        starts.  When typing text beyond this limit, an <EOL> will be inserted
        and inserting continues on the next line.
        Options that add a margin, such as 'number' and 'foldcolumn', cause
        the text width to be further reduced.  This is Vi compatible.
        When 'textwidth' is non-zero, this option is not used. 
        See also 'formatoptions' and |ins-textwidth|.  {Vi: works differently
        and less usefully}

Si vous faites référence à l'enroulement automatique des longues lignes en les envoyant à la suivante, essayez

:set textwidth=0 
:set wrapmargin=0
Stefano Borini
la source
12
Certains plugins semblent remplacer ce paramètre.
Yzmir Ramirez
Les options twet wpn'ont pas vraiment fonctionné pour moi, j'ai donc dû aller sur formatoptions github.com/ain/.vim/blob
Ain Tohvri
2
Si tw et wp ne résolvent toujours pas le problème, jetez un œil à ce post sur SU qui m'a aidé à résoudre mon problème: superuser.com/questions/250112/…
Alien_SM
3
Retirer filetype plugin onde moi l'a .vimrcfait pour moi.
1
Avec cette réponse, vous ne pouvez pas utiliser gqpour réaligner le paragraphe manuellement sur la largeur du texte. @ Engineero devrait être le bon.
Dylanthepiguy
86

Aucune des autres réponses n'a fonctionné pour moi (IDK pourquoi).

:set wrap! A fait l'affaire pour moi (en utilisant GVim pour Windows).

Knomo Seikei
la source
8
Cela résout un problème légèrement différent. wrapdonne l'apparence d'un retour à la ligne, mais ne coupe pas réellement le texte sur de nouvelles lignes. Vous avez probablement wrapactivé, alors :set wrap!désactivez-le. Vous pouvez vérifier avec :set wrap?qui fera écho la valeur actuelle (c'est wrap-à- dire ou nowrap).
shadowtalker
1
Cette solution fonctionne pour moi chez Mac OsX. Vim version 7.4
Shnkc
Cela a fonctionné pour moi, j'ai changé textwidthet d' wrapmarginabord, mais cela a en fait forcé vim à mettre à jour et à réexécuter sans aucune ligne encapsulée.
Kredns
Ding din ding! Works in neovim
Gjaa
Quel moment magique lorsque vous découvrez que la commande dont vous avez vraiment besoin est si expressive et simple. Thanks devs
Capitan Empanada
57

set formatoptions-=tdevrait faire l'affaire. set formatoptions+=tréactivera l’emballage automatique.

Pour plus d'informations sur ce que vous pouvez faire formatoptions, consultez la documentation .

Engineero
la source
2
Je vous remercie! Votre solution est la seule qui a fonctionné pour moi. Parfois, vim n'insère plus de nouvelles lignes lorsque j'entre en mode insertion.
Geremia
2
Ouaip. C'est la vraie solution.
Russ Bateman
16

Pour empêcher vim d'envelopper de longues lignes, j'utilise ces deux lignes dans mon .vimrc:

set nowrap           " do not automatically wrap on load
set formatoptions-=t " do not automatically wrap text when typing
gon1332
la source
12

Pour désactiver le retour à la ligne, vous pouvez entrer :set wrap!ou ajouter cette commande à votre ~/.vimrc.

Mapsy
la source
2
Cela n'affecte pas l'insertion automatique de sauts de ligne réels, dont traite cette question.
Arthur Tacca
9

C'est peut-être la largeur de texte définie, qui coupe automatiquement les lignes lorsqu'elle atteint une certaine longueur Essayez

:set tw=0

Si cela échoue, jouez avec par exemple

:set wrap linebreak textwidth=0 

et

:set virtualedit=insert
nos
la source
2
wrap et linebreak n'insèrent pas de fin de ligne réelle dans le tampon, donc cela ne semble pas être son problème.
A. Levy
0

Ouvrez vimrc_example.vim (Oui, c'est le fichier dans Vim74) et définissez textwidth = 0.

Policier
la source
0

Sur macbook pro, j'ai surpassé en .vimrc la ligne

autocmd FileType text setlocal textwidth=78

alors c'est devenu

"  autocmd FileType text setlocal textwidth=78

.

(J'ai installé une version de vim via homebrew.) Cela a aidé pour tous les fichiers .txt.

feli_x
la source