Comment puis-je configurer une règle sur une colonne spécifique?


50

Lors du codage dans différentes langues, j'ai tendance à devoir limiter mes lignes à une longueur spécifique (généralement 79 ou 80 caractères).

J'ai constaté cela dans d'autres éditeurs en utilisant une règle (ligne continue dans la colonne) ou en modifiant la couleur du texte pour indiquer qu'il a été dépassé.

Comment puis-je me faire indiquer par Vim quand j'approche ou dépasse 79 caractères sur une seule ligne?

Réponses:


64

Vous pouvez afficher une règle sur une ligne spécifique en utilisant l' option :set colorcolumn( :set ccen abrégé) qui est uniquement disponible dans Vim 7.3 ou version ultérieure.

set colorcolumn=80

Cela définira la couleur d'arrière-plan de cette colonne sur rouge, ce qui vous donnera une règle visuelle à partir de laquelle travailler.

Image de colorcolumn par défaut définie à 80

Si vous souhaitez utiliser une couleur différente du rouge (qui se démarque vraiment), vous pouvez modifier la couleur en définissant la valeur highlightpour ColorColumn.

highlight ColorColumn ctermbg=0 guibg=lightgrey

Couleur personnalisée pour la colonne

Vous pouvez définir la couleur des versions de terminal de Vim à l'aide de l' ctermargument et les versions à interface graphique de Vim à l'aide de l' guibgargument. Le 0est la valeur du code d'échappement ASCII pour le noir, qui est gris lorsqu'il est éclairci (ce qui est le cas par défaut). La valeur lightgreyest utilisée par les versions GUI de Vim, telles que gVim, pour modifier la couleur d'arrière-plan en gris clair.


10
Vous pouvez même avoir plusieurs colonnes de couleur séparées par des virgules!
200_success

4
Combinez cela avec join & range et vous pouvez avoir un tas de colonnes colorées avec très peu de code. Mon .vimrc a:execute "set colorcolumn=" . join(range(81,335), ',')
Cody Poll

19

En complément de la réponse de Kevin, vous pouvez avoir plusieurs colonnes de couleur. Lorsque je code, j'ai parfois une limite "souple" à 80 colonnes et une limite "dure" à 120 colonnes. Donc, je veux une ligne à 80, puis chaque colonne après 120 doit être colorée.

Je fais ça avec

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

Bien sûr, cela peut être facilement modifié en fonction d’autres préférences.


14

Vim 7.3 apporte l' colorcolumnoption, comme très bien détaillé dans d'autres réponses.

Cependant, si vous ne possédez pas la version 7.3 pour une raison quelconque, vous pouvez toujours obtenir une indication visuelle que vous dépassez un nombre de colonnes particulier en utilisant les matchfonctionnalités de vim (voir :help matchpour plus de détails).

Essentiellement, les commandes de correspondance vous permettent de créer des surlignages persistants pour le texte correspondant à une expression régulière donnée. :match ColorColumn "\%80v."mettra en évidence le texte de la colonne 80 avec le groupe "ColorColumn". Vous pouvez bien sûr remplacer n'importe quel groupe de surbrillance et n'importe quelle valeur de colonne. Si vous souhaitez une indication visuelle forte, l’expression "\%>79v.\+"mettra en évidence la colonne 80 et au-delà.

( \%80vsignifie "correspondance dans la colonne virtuelle 80" et \%>79v"correspondance après la colonne virtuelle 79; voir :help /\%cpour plus d'informations.)

Cette approche ne met en évidence que la présence de caractères réels dans les colonnes spécifiées, ce qui la rend visuellement moins cohérente que colorcolumn.


4
Personnellement, je trouve l’approche moins cohérente de matches meilleure, car elle ne met en évidence que les lignes où je dépasse la limite de 80 colonnes, plutôt que de montrer une grande ligne rouge intrusive (à mon sens) à droite de l’écran. Par conséquent, dans mon vimrc pour Python, j’utilise call matchadd('ColorColumn', '\(\%80v\|\%100v\)')(80 et 100 étant les longueurs suggérées dans PEP 8)
jalanb
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.