Comment arrêter la rupture de ligne dans vim

257

J'aime que les longues lignes soient affichées sur plus d'une ligne terminale; Je n'aime pas que vim insère des nouvelles lignes dans mon texte actuel. Quelle partie de .vimrc dois-je changer?

Haiyuan Zhang
la source
7
Pour plus de clarté: vous aimez que les longues lignes soient affichées sur plusieurs lignes terminales; vous n'aimez pas que vim insère des retours à la ligne dans votre texte actuel? Si oui, alors :set nowrapc'est le contraire de ce que vous voulez :(.
Andrew Aylett
@Andrew: oui votre résumé est exactement ce que je veux
Haiyuan Zhang

Réponses:

304

Utilisation

:set wrap

Pour envelopper visuellement les lignes, c'est-à-dire que la ligne est toujours une ligne de texte, mais Vim l'affiche sur plusieurs lignes.

Utilisation

:set nowrap

Pour afficher les longues lignes comme une seule ligne (c'est-à-dire que vous devez faire défiler horizontalement pour voir la ligne entière).

Brian Rasmussen
la source
3
Merci pour les conseils que vous les gars. Je suis allé avec: set nowrap et: set textwidth = 0 fonctionne très bien
Robert Beltran
5
Lorsque je tape, je veux toujours voir la limite "visuelle" de 80 colonnes et je ne veux pas que vim ajoute automatiquement un saut de ligne lorsque je tape après la 80e colonne. Comment fais-je?
Olivier Pons
7
C'est exactement la réponse que je cherchais, mais ce n'est pas la réponse à la question d'OP. C'est un peu trompeur d'avoir cela comme première réponse. Je ne sais pas comment résoudre cette situation. Je voudrais juste modifier votre réponse pour répondre également à la question d'origine. Mais il existe déjà une bonne réponse qui est presque aussi bien votée. Je viens donc de voter pour changer les deux réponses.
Daniel Darabos
3
C'est exactement la réponse que je ne cherchais pas , et ce n'est pas la réponse à la question du PO.
peeol
Ce n'est pas une réponse à la question.
194

J'aime que les longues lignes soient affichées sur plus d'une ligne terminale

Ce type de retour à la ligne visuel / virtuel est activé avec l' wrapoption de fenêtre:

set wrap

Je n'aime pas que vim insère des nouvelles lignes dans mon texte actuel.

Pour désactiver l'habillage de ligne physique, désactivez les options de tampon textwidthet wrapmargin:

set textwidth=0 wrapmargin=0
Laurence Gonsalves
la source
1
Merci! set textwidth=0 wrapmargin=0fonctionne mais si je le mets .vimrc, il n'a pas d'effet par exemple pour les fichiers en texte brut. Comment trouver et éliminer l'écrasement?
qubodup
7
@qubodup Vous pouvez tester si quelque chose écrase votre paramètre .vimrc en ouvrant un fichier où vous voyez le problème et en entrant :verbose set textwidth? wrapmargin?. Cela vous indiquera leurs valeurs actuelles et également où elles ont été définies. Il est possible que vous ayez un plugin qui les remplace. Dans ce cas, vous pouvez soit désinstaller ce plugin, soit essayer de remplacer le paramètre du plugin plus tard dans votre runtimepath (par exemple:) ~/.vim/afterou avec votre propre autocommande. La bonne approche dépendra de l'endroit / de la façon dont elle est réinitialisée.
Laurence Gonsalves
set wrapet set linebreakc'est ce qui a fait pour moi.
Ilia Choly
36

Je ne suis pas sûr de bien comprendre, mais vous recherchez peut-être le paramètre de configuration «formatoptions». Essayez quelque chose comme :set formatoptions-=t. L' toption insérera des sauts de ligne pour faire du texte à la largeur définie par textwidth. Vous pouvez également mettre cette commande dans votre .vimrc, supprimez simplement les deux points ( :).

Erik Hesselink
la source
3
Cela me semble la meilleure option pour répondre au souhait du PO. J'aime le fait que vim montre toujours une ligne verticale à tw.
mitchus
3
C'est la seule réponse répondant réellement à la question d'OP. La plupart des autres font le contraire. OP souhaite toujours que les longues lignes s'affichent, mais pour que vim n'insère pas automatiquement les sauts de ligne.
sepastian
33

Utilisez :set nowrap.. fonctionne comme un charme!

Vatsala
la source
10
Sauf qu'il fait le contraire de ce que l'OP définit comme comportement voulu ...: P
Morlock
5
@Morlock, mais répond à la question que j'avais et Google m'a conduit ici :)
Ben Usman
existe-t-il un raccourci clavier pour cela?
Pini Cheyni
@PiniCheyni, ajoutez à votre fichier .vimrc: nnoremap <Cw>: définissez invwrap <CR> Ensuite, vous pouvez utiliser Ctrl + W pour basculer l'habillage du texte.
reas0n
30

:set tw=0

VIM n'insérera pas automatiquement les sauts de ligne, mais conservera l'habillage de ligne.

orip
la source
3
Je veux exactement le contraire ... quand je tape, je veux toujours voir la limite "visuelle" de 80 colonnes et je ne veux pas que vim ajoute automatiquement un saut de ligne lorsque je tape après la 80e colonne. Comment fais-je?
Olivier Pons
16

Vous pouvez trouver set lbrutile; avecset wrap sur cela va envelopper mais seulement couper la ligne sur les espaces et non au milieu d'un mot.

par exemple

without lbr the li
ne can be split on
a word

et

with lbr on the
line will be
split on 
whitespace only
davetapley
la source
Il est fortement recommandé d'éviter les options abrégées, car à l'avenir, vous devrez effectuer une recherche sur le système d'aide pour comprendre ce que vous avez réglé, alors utilisez set nolinebreakplutôtset lbr
SergioAraujo
12

set formatoptions-=t Conserve la largeur de texte visuelle mais n'ajoute pas de nouvelle ligne en mode insertion.

Jimmy Tran
la source
4

Il est étrange qu'un réglage aussi simple nécessite cette quantité de «hocus-pocus» pour fonctionner.

Pour répondre à votre question maintenant, pour moi, cela semblait fonctionner avec la combinaison des éléments suivants:

:set wrap linebreak nolist

(Cela semble empêcher les lignes existantes de casser, juste envelopper.)

ET

set formatoptions=l

(cela empêche les lignes nouvelles / modifiées de se casser, tandis que + = ne le fait pas pour moi car d'autres paramètres / plugins semblent trouver de l'espace et ajouter leurs propres options qui remplacent la mienne.)

petroslamb
la source
4

Si, comme moi, vous exécutez gVim sur Windows, votre fichier .vimrc peut rechercher un autre fichier Vimscript `` exemple '' qui définit automatiquement textwidth(dans mon cas 78) les fichiers texte.

Ma réponse à une question similaire à celle-ci - Comment arrêter le wrapping de gVim dans la colonne 80 - sur le site Vi et Vim Stack Exchange :

Dans mon cas, le commentaire de Vitor m'a suggéré d'exécuter ce qui suit:

:verbose set tw?

Cela m'a donné la sortie suivante:

textwidth=78
      Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim

Dans vimrc_example.vim , j'ai trouvé les lignes pertinentes:

" Only do this part when compiled with support for autocommands.
if has("autocmd")

  ...

  " For all text files set 'textwidth' to 78 characters.
  autocmd FileType text setlocal textwidth=78

  ...

Et j'ai trouvé que mon .vimrc s'approvisionne dans ce fichier:

source $VIMRUNTIME/vimrc_example.vim

Dans mon cas, je ne veux textwidthêtre défini pour aucun fichier, j'ai donc simplement commenté la ligne appropriée dans vimrc_example.vim .

Kenny Evitt
la source
1
Plutôt que de modifier le fichier vimrc_example.vim, je viens d'ajouter autocmd FileType text setlocal textwidth=0au fichier vimrc et cela a résolu le problème lorsque d'autres solutions proposées ne l'ont pas fait.
GrandAdmiral
3

Il est vrai que set nowrap vous permettra de coller une longue ligne sans que vi / vim ajoute de nouvelles lignes, mais la ligne n'est pas visuellement enveloppée pour une lecture facile. Il s'agit plutôt d'une seule longue ligne que vous devez parcourir.

Pour que la ligne s'habille visuellement mais sans y insérer de caractères de nouvelle ligne, définissez l'habillage (qui est probablement par défaut, donc pas nécessaire de la définir) et définissez textwidth = 0 .

Sur certains systèmes, le réglage de textwidth = 0 est par défaut. Si vous ne trouvez pas que ce soit le cas, ajoutez set textwidth = 0 à votre fichier .exrc afin qu'il devienne la valeur par défaut de votre utilisateur pour toutes les sessions vi / vim.

Cruciverbalist
la source