Affichage d'une couleur d'arrière-plan différente dans Vim après 80 caractères

135

J'ai vu des problèmes de mise en page de la colonne Vim 80 , mais la réponse ne met en évidence que le contenu réel qui dépasse la marque des 80 caractères. Je veux avoir une fenêtre Vim de plus de 100 colonnes ouverte avec les 80 colonnes les plus à gauche en utilisant l'arrière-plan normal et tout ce qui est passé avec un arrière-plan légèrement différent. L'arrière-plan de la fenêtre Vim doit être d'une couleur différente, pas seulement du texte qui dépasse les 80 points de caractère. Cela indiquerait à quel point je me rapproche du point de 80 caractères sans avoir à le parcourir d'abord.

Je ne pense pas que ce soit possible actuellement, mais j'ai pensé que je demanderais juste au cas où.

Peut-être que cela pourrait être fait avec un plugin?

Exemple de TextMate de mise en évidence de la marge droite Vim souhaitée

En sélectionnant "Mettre en évidence la marge droite" dans les préférences générales de TextMate, vous pouvez voir un exemple du comportement Vim souhaité.

Exemple de mise en évidence de la marge droite TextMate

Doug
la source

Réponses:

223

Si vous avez Vim> = v7.3, vous pouvez simplement l'ajouter à votre .vimrcpour mettre en surbrillance 81 et les suivants (donc 80 est votre dernière colonne valide):

let &colorcolumn=join(range(81,999),",")

Si vous ne voyez pas de surbrillance, vous n'avez peut-être pas de ColorColumnjeu de couleurs de surbrillance. Ajoutez ceci (ajustez selon vos préférences):

highlight ColorColumn ctermbg=235 guibg=#2c2d27

Maintenant, j'aime mettre en évidence la colonne 80 ainsi que 120 et suivantes, donc j'ai des marqueurs séparés "avertissement" et "danger". Vous pouvez le faire ainsi:

let &colorcolumn="80,".join(range(120,999),",")

Exemple

Voici une capture d'écran de GVim éditant mon fichier .vimrc.

GVim éditant mon .vimrc

J'utilise la police Ubuntu Mono 11 et le jeu de couleurs molokai . Vous pouvez trouver ma configuration vim et tous mes dotfiles sur GitHub.

Justin Force
la source
3
colorcolumn est limité à 256 définitions, par :help colorcolumn... de plus, mon paramètre semble être tronqué un peu lorsque vous utilisez votre technique de jointure, bien que je ne puisse pas être obligé de rechercher dans la source de vim pour déterminer quelle est cette longueur. De plus, vim analyse la valeur de ce paramètre sous forme de chaîne à chaque fois qu'il entre dans une fenêtre, initialise un tampon, etc., donc c'est une sorte de moyen coûteux d'obtenir le résultat souhaité.
cptstubing06
15
Vos fichiers dotfiles sont CHAUDS.
obfk
1
Merci d'avoir publié ceci, c'était exactement ce que je cherchais! Encore une question, existe-t-il un moyen de ne pas définir ces règles sur un type de fichier spécifique (.md)?
David Dias
1
@DavidDias Bien sûr! Vous pouvez faire quelque chose comme l' autocmd FileType markdown let &colorcolumn=""annuler complètement.
Justin Force
1
lien mis à jour vers la configuration de vim
reergymerej
78

Mettre en évidence la colonne 81

:set textwidth=80
:set colorcolumn=+1

Vous pouvez également faire du style:

:hi ColorColumn guibg=#2d2d2d ctermbg=246
Andrew
la source
2
Ceci, et il est également possible de le faire mettre en évidence jusqu'à 256 colonnes, mais malheureusement, il faut une liste de colonnes pour mettre en évidence et il n'y a pas de raccourci pour cela, vous devriez donc faire quelque chose comme :set colorcolumn=+1,+2,+3,+4,+5,+6etcetera peut-être jusqu'à +256pour aussi large vous pensez que vous aimeriez votre bonne marge. Cependant, cela ne mettra en évidence que les lignes qui existent dans le tampon, pas toutes les lignes de la fenêtre.
mkomitee
1
@Dyslexic Tangent: Pourquoi ne pas mettre en évidence les 80 premières colonnes à la place?
brice
1
Je n'avais pas pensé à ça. Définissez votre arrière-plan sur la couleur que vous souhaitez utiliser pour mettre en évidence> 80 colonnes, définissez la couleur de toutes les colonnes de 1 à 80 et définissez le groupe de surbrillance de la colonne de couleur sur la couleur que vous souhaitez que votre arrière-plan normal soit.
mkomitee
2
Une question, bien que je puisse définir correctement la couleur en tapant, :hi colorcolumn ...elle ne semble pas fonctionner lorsque je la mets dans mon .vimrc. Savez-vous comment faire ça?
robbrit
Je vois le même problème que robbrit - Si j'exécute la commande de surbrillance en mode ex, cela a l'air bien, mais si je l'ai dans mon fichier vimrc, cela détruit mon
schéma de
16

Solution proposée en commentaire ci-dessus. Mettez d'abord votre arrière-plan en surbrillance, puis mettez en surbrillance le noir ColorColumn en superposition. Réglez votre colonne de couleur sur les lignes 1 à 80.

hi Normal guibg=#32322f ctermbg=236
hi NonText guibg=#32322f ctermbg=236
hi ColorColumn guibg=#000000 ctermbg=0
let &colorcolumn=join(range(1,80),",")
Conner
la source
1
C'est simple mais brillant. Merci!
frappe aérienne du
8

essayer:

:/\%>80v./+

il marquera +80 caractères comme erreur

GoTTimw
la source
Tellement intelligent à la rigueur. Je l'aime car il s'adapte aux changements de thème. Merci.
Benjamin
0

Je ne pense pas qu'il soit possible d'avoir ce que l'on veut, mais je suis cette question puisque je m'intéresse moi-même à une telle chose.

Peut-être que je dis l'évidence, mais vous pouvez configurer le point culminant dans les colonnes 70 + pour obtenir une indication de la distance à laquelle vous vous approchez de la 80ème colonne.

René Nyffenegger
la source
0

Pour ceux qui utilisent onedark.vim comme moi qui souhaitent une solution publiée par Conner, j'ai ajouté ces lignes à mon fichier vimrc

let &colorcolumn=join(range(1,80),",")
let g:onedark_color_overrides = {
  \ "black": {"gui": "#2C323C", "cterm": "236", "cterm16": "8"},
  \ "cursor_grey": {"gui": "#282C34", "cterm": "235", "cterm16": "0"}
  \ }

Je viens d'échanger les deux valeurs, je l'ai pris du code source de onedark

yujinyuz
la source