web-dev-qa-db-fra.com

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

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

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

113
jennifer

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

Malheureusement, vim ne dispose d'aucun mécanisme pour afficher une ligne verticale après une colonne comme vous le souhaitez (contrairement à TextMate, par exemple). Cependant, il existe d'autres indicateurs visuels que vous pouvez utiliser pour montrer 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

Vous pouvez donc utiliser <Leader>H pour alterner les colonnes de plus de 80 en surbrillance.

15
Sam

Nouveau dans Vim 7.3:

'colorcolumn' est une liste séparée par des virgules de colonnes d'écran mises en surbrillance avec ColorColumn. Utile pour aligner le texte. Rend l'écran plus lent. La colonne d'écran peut être un nombre absolu ou un nombre précédé de "+" ou "-", qui est ajouté ou soustrait à "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
296
UncleZeiv

Il existe un autre moyen de notifier la longue ligne.

mettre en surbrillance OverLength ctermbg = red ctermfg = white guibg = # 592929
correspond à OverLength /\%81v.*/

la disposition de la colonne Vim 80 concerne

11
Brian

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

Je mets cette commande dans mes python.vim et Ruby.vim sous ~/.vim/after/ftplugin /.

6

Plusieurs réponses ici http://vim.wikia.com/wiki/Highlight_long_lines autocontrôle simple

:au BufWinEnter * let w:m1=matchadd('Search', '\%<81v.\%>77v', -1)
:au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
3
michael