2010-02-02 5 views
65

Est-il possible de faire en sorte que Vim/gVim surligne la marge de droite sur le document actuel? Je viens de commencer à travailler avec Vim pendant un certain temps et je l'ai trouvé ennuyé sans droit marge à la colonne 80.Marge de droite dans Vim

+0

http://stackoverflow.com/questions/235439/vim-80-column-layout-concerns –

+0

Vous pouvez définir la largeur du texte et même définir nowrap si vous voulez. – pavium

+10

Nouveauté de Vim 7.3: ': set cc = 81', ou par rapport à la largeur de texte:': set cc = + 1'. – Nefrubyr

Répondre

103

Vim 7.3 a introduit la colonne de couleur.

:set colorcolumn=80 

Il peut être plus facile de vous souvenir de la forme abrégée.

:set cc=80 
+2

Jetez un oeil à la deuxième réponse ici: http://stackoverflow.com/questions/235439/vim-80-column-layout-concerns pour une amélioration de la compatibilité. – mgold

+1

@mgold ne référence jamais une réponse par numéro. L'ordre change en fonction des votes. Toujours utiliser le lien de partage. –

+1

5 mois plus tard, j'ai cherché Google encore et encore trouvé le lien ci-dessus pour être ennuyeux. Voici la réponse dont il parle http://stackoverflow.com/a/3765575/117471 qui montre comment rendre votre vimrc compatible avec vim> = 7.3 et <7.3 –

19

Il n'y a aucun moyen simple de visualiser bord vertical de la textwidth -margin (dans vim 7.2 et plus tôt). Cependant, on peut mettre en surbrillance tous les caractères au-delà de la limite de 80 colonnes en utilisant la commande :match.

:match ErrorMsg /\%>80v.\+/ 

Ainsi, la solution générale consiste à utiliser l'auto-commande suivante.

:autocmd BufWinEnter * call matchadd('ErrorMsg', '\%>'.&l:textwidth.'v.\+', -1) 
7

J'ai écrit une fonction vimscript dans mon .vimrc pour basculer colorcolumn quand je presse, 8 (virgule suivie par 8, où la virgule est le leader défini pour les commandes définies par l'utilisateur, et huit est ma clé mnémotechnique pour « montrer une marge à la 80e colonne):

" toggle colored right border after 80 chars 
set colorcolumn=81 
let s:color_column_old = 0 

function! s:ToggleColorColumn() 
    if s:color_column_old == 0 
     let s:color_column_old = &colorcolumn 
     windo let &colorcolumn = 0 
    else 
     windo let &colorcolumn=s:color_column_old 
     let s:color_column_old = 0 
    endif 
endfunction 

nnoremap <Leader>8 :call <SID>ToggleColorColumn()<cr> 
+1

Pourquoi pas un simple doublure: ': nnoremap 8 & cc? ': Let & cc = 0 ': ': let & cc = 80 ' ' –

+0

Dr Beco: Beaucoup mieux, merci! –

2

J'ai réécrite the answer de Jonathan Hartley pour les versions plus anciennes comme 7.2 Vim comme il n'y a pas colorcolumn dans Vims plus.

highlight OverLength ctermbg=red ctermfg=white guibg=#592929 

let s:OverLengthToggleVariable=0 

function! ToggleOverLength() 
     if s:OverLengthToggleVariable == 0 
       match OverLength /\%81v.\+/ 
       let s:OverLengthToggleVariable=1 
     else 
       match OverLength // 
       let s:OverLengthToggleVariable=0 
     endif 
endfunction 

" I like <leader>h since highlight starts with h.                  
nnoremap <leader>h :call ToggleOverLength()<cr>