80 votes

Est-il possible de visualiser la marge droite dans Vim ?

Y a-t-il un moyen de faire en sorte que Vim (ou gVim, ou les deux) mette en surbrillance la marge droite du tampon actuel?

Je viens de commencer à travailler avec Vim depuis un certain temps et je trouve ennuyeux de ne pas avoir la marge droite visible (disons, à la colonne 80).

1 votes

0 votes

Vous pouvez définir la largeur du texte et même définir nowrap si vous le souhaitez.

11 votes

Nouveau dans Vim 7.3 : :set cc=81, ou par rapport à textwidth : :set cc=+1.

125voto

wilhelmtell Points 25504

Vim 7.3 a introduit colorcolumn.

:set colorcolumn=80

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

:set cc=80

2 votes

Jetez un coup d'œil à la deuxième réponse ici: stackoverflow.com/questions/235439/… pour une amélioration de la compatibilité.

1 votes

@mgold ne faites jamais référence à une réponse par son numéro. L'ordre change en fonction des votes. Utilisez toujours le lien de partage.

1 votes

5 mois plus tard, j'ai à nouveau cherché sur Google et j'ai trouvé le lien ci-dessus ennuyant. Voici la réponse à laquelle il fait référence stackoverflow.com/a/3765575/117471 qui montre comment rendre votre vimrc compatible à la fois avec vim >=7.3 et <7.3

19voto

ib. Points 14520

Il n'y a pas de moyen simple de visualiser une bordure verticale pour la marge textwidth dans Vim 7.2 ou antérieur; à partir de la version 7.3, il y a une option colorcolumn dédiée. 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.\+/

Tout ce dont nous avons besoin pour en faire une solution générale, c'est de construire dynamiquement le motif de correspondance pour substituer la bonne valeur de l'option textwidth:

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

7voto

Jonathan Hartley Points 3763

J'ai écrit une fonction vimscript dans mon .vimrc pour basculer la colorcolumn quand j'appuie sur ,8 (virgule suivie de 8, où la virgule est le leader défini pour les commandes utilisateur, et huit est ma touche mnémonique pour 'afficher une marge à la 80ème colonne):

" basculer la bordure droite colorée après 80 caractères
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 8 :call ToggleColorColumn()

1 votes

Pourquoi ne pas un simple one-liner: :nnoremap 8 &cc?':let &cc=0':':let &cc=80'

2voto

Mateusz Piotrowski Points 3815

J'ai réécrit la réponse de Jonathan Hartley pour les anciennes versions de Vim comme la 7.2 car il n'y a pas de colorcolumn dans les anciennes versions de Vim.

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

" J'aime h car highlight commence par h.                                                                      
nnoremap h :call ToggleOverLength()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X