Comment afficher une ligne verticale pour envelopper la ligne dans Vim?

116

Je suis intéressé à trouver un moyen d'afficher une ligne verticale à la colonne 80 dans Vim (pas GVim).

J'ai utilisé set wrap, mais je veux juste montrer une ligne verticale afin que je puisse envelopper la longue ligne moi-même.

Jennifer
la source
Une duplication possible de la disposition des colonnes
Trevor Boyd Smith

Réponses:

15

Edit: Pour Vim> = 7.3 voir la réponse ci-dessous .

Malheureusement, vim n'a pas de mécanisme pour afficher une ligne verticale après une colonne comme vous le souhaitez (contrairement, par exemple, à TextMate). Cependant, il existe d'autres indicateurs visuels que vous pouvez utiliser pour indiquer qu'une ligne est trop longue.

Voici ce que j'utilise (vous pouvez mettre ceci dans votre .vimrc):

nnoremap <Leader>H :call<SID>LongLineHLToggle()<cr>
hi OverLength ctermbg=none cterm=none
match OverLength /\%>80v/
fun! s:LongLineHLToggle()
 if !exists('w:longlinehl')
  let w:longlinehl = matchadd('ErrorMsg', '.\%>80v', 0)
  echo "Long lines highlighted"
 else
  call matchdelete(w:longlinehl)
  unl w:longlinehl
  echo "Long lines unhighlighted"
 endif
endfunction

Ainsi, vous pouvez utiliser <Leader>Hpour basculer les colonnes sur 80 en surbrillance.

Sam
la source
Représentation de script vim de la clé leader. Voir Afficher le réglage actuel de la touche <leader>
Rod
@Will, Learn Vimscript the Hard Way est une bonne ressource pour en savoir plus sur le terrier du lapin vim.
jazzabeanie
310

Nouveau dans Vim 7.3:

'colorcolumn' est une liste de colonnes d'écran séparées par des virgules qui sont mises en évidence avec ColorColumn. Utile pour aligner le texte. Ralentit le rafraîchissement de l'écran. La colonne de l'écran peut être un nombre absolu, ou un nombre précédé de «+» ou «-», qui est ajouté ou soustrait de «textwidth».

Exemple tiré de la documentation:

:set colorcolumn=+1        " highlight column after 'textwidth'
:set colorcolumn=+1,+2,+3  " highlight three columns after 'textwidth'
:highlight ColorColumn ctermbg=lightgrey guibg=lightgrey

Vous pouvez également utiliser des nombres absolus:

:set colorcolumn=80
OncleZeiv
la source
4
Je pense qu'il est bon de noter ici que la couleur est automatiquement déterminée par votre couleur de surbrillance à moins que vous ne la définissiez manuellement comme dans l'exemple.
Alex Hart
Notez que le highlightparamètre doit être défini après toutes les colorschemecommandes, car cela remplacerait votre couleur de surbrillance.
c4urself
7
Je suis allé avec brillant, brûlez-votre-cerveau-rouge ... parce que vous savez ... longueur de ligne
Ron Dahlgren
Connaissez-vous un moyen d'avoir deux couleurs différentes pour la colonne de couleur? Je voudrais en avoir deux: un simple à 80 caractères pour le code, et un très faible à 72 caractères pour le texte / commentaires qui coule.
Alice
Il serait bon de mentionner que cela textwidthentraîne également un encapsulation de vim lorsque vous tapez.
poussins
6

J'utilise match ErrorMsg '\%>80v.\+'ce qui mettra en évidence tout ce qui dépasse 80 caractères avec du rouge.

J'ai mis cette commande dans mon python.vim et ruby.vim sous ~ / .vim / after / ftplugin /.

Pierre-Antoine LaFayette
la source