Comment configurer un marqueur de longueur de ligne dans vim / gvim?

75

Certains éditeurs de texte d'interface graphique ont une ligne verticale qui sert de marqueur de longueur de ligne (cela permet de conserver les lignes de moins de 80 caractères dans les fichiers de code source).

Est-il possible d'avoir quelque chose de similaire dans vim / gvim? Je connais l' option règle vim, mais il n'est pas très pratique de la suivre visuellement sur un grand écran.

Edit: quand googler pour "colorcolumn" pour en savoir plus, j'ai trouvé que cette question est un doublon de https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns

vtest
la source
dupliquer sur un autre site ... stackoverflow.com/questions/235439/…
Trevor Boyd Smith

Réponses:

131

Juste exécuter ceci

:set colorcolumn=72

Vous pouvez également l'argument préfixe avec -ou +pour mettre le marqueur que plusieurs colonnes à gauche ou à droite textwidth, et il accepte une liste séparée par des virgules des colonnes. Je pense que l' colorcolumnoption est seulement dans Vim 7.3. Voir

:help colorcolumn
Garyjohn
la source
8
Wow, Vim ne cesse jamais de m'étonner!
Peter Nore
4
Agréable! Également utile lorsque columns=80, wrapest défini et colorcolumn=81,161,241,321,401,481,561,641,721,801- affiche jusqu'à 10 lignes reliées avec la première colonne en surbrillance.
Amir
20

Extrait du discours "Plus instantanément meilleur Vim" de Damian Conway à OSCON 2013:

highlight ColorColumn ctermbg=magenta
call matchadd('ColorColumn', '\%81v', 100)

Il en résulte que le caractère est mis en surbrillance en magenta (la capture d'écran est insérée DarkCyan) lorsque la ligne dépasse le maximum de 80 caractères.

vim avec mise en évidence activée

Pour gVim: il est préférable de déplacer ces 2 lignes vers la dernière partie de votre .vimrcfichier pour vous assurer que cela fonctionne.

Isxek
la source
Hein! Je viens de répondre à votre question très similaire à propos de ce petit monde! superuser.com/questions/771558/…
lornix
J'ai mis cette réponse dedans, puis je me suis rappelé que je ne pouvais pas le faire dans gVim, alors j'ai demandé. ;)
Isxek
Wow, c'est vraiment génial! C'est le genre de fonctionnalité que je ne saurais même pas rechercher. J'utilise le modèle '\$81v\S'qui correspond uniquement aux caractères non-blancs. Cela signifie que la surbrillance ne s'affiche pas lorsque la ligne contient 80 caractères exactement (ce qui m'a vraiment dérangé). Voir ceci pour plus d'informations stackoverflow.com/questions/12985042/…
fvgs
1
Voulez-vous apporter quelques corrections à mon commentaire précédent. Le $aurait dû être un %. De même, j'utilise maintenant le modèle, \%81v.car cela garantit que la 81ème colonne sera mise en surbrillance pour tout caractère de la 81ème colonne, ce qui est probablement ce que vous voulez.
Fvgs
2

Vous pouvez essayer ceci:

grep '.\{81\}' file

ou

set colorcolumn=80

(ou l'équivalent abrégé)

set cc=80

ou comme mentionné ci-dessus:

match ErrorMsg '\%>80v.\+'
Gabriel Zalles
la source
0

Voici un truc maladroit de Hacking Vim: un livre de recettes pour tirer le meilleur parti du dernier éditeur Vim de Kim Schultz.

Il met en évidence ErrorMsg(généralement en rouge vif) les lignes comportant plus de 80 caractères. Fonctionne bien pour moi.

function! RemoveWidthLimitWarnigns()
    silent! call matchdelete(4)
endfunction
function! InsertWidthLimitWarnings()
    call RemoveWidthLimitWarnigns()
    call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)
endfunction
unperson325680
la source
Qu'est-ce que je suis censé faire avec cet extrait? Il suffit de le coller dans .vimrc?
vtest
Essayer d'abord en appelant :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)suffit. Mais je ne recommanderais plus cela car @garyjohn savait quelque chose de mieux
unperson325680 le