Vim 80 préoccupations relatives à la disposition des colonnes
j'ai l'impression que la façon dont je fais l'indication de 80 colonnes dans Vim est incorrecte: set columns=80
. Parfois j'ai aussi set textwidth
mais j'aime pouvoir voir et anticiper le débordement de ligne avec l'alternative set columns
.
cela a quelques effets secondaires malheureux -- Je ne peux pas set number
par crainte de se partager entre les fichiers qui ont des ordres différents de nombres de ligne; c.-à-d. = 100 fichiers de ligne nécessiteront deux valeurs set columns
différentes en raison de la colonne supplémentaire utilisée pour l'affichage des chiffres supplémentaires. Je commence aussi de nouvelles sessions Vim (g)au lieu de couper les fenêtres verticalement, ce qui me force à utiliser le presse-papiers du gestionnaire de fenêtres -- vsplit
s me force à faire set columns
chaque fois que j'ouvre ou ferme un volet, donc commencer une nouvelle session est moins embêtant.
comment gérer l'indication de 80 caractères lorsque vous voulez set numbers
, fractionnement vertical, etc.?
14 réponses
j'ai cette installation dans mon .vimrc:
highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.\+/
cela met en évidence l'arrière - plan dans un subtil rouge pour un texte qui dépasse la limite des 80 colonnes (subtil en mode GUI, de toute façon-en mode terminal c'est moins vrai).
à partir de vim 7.3, vous pouvez utiliser set colorcolumn=80
( set cc=80
en abrégé).
puisque les versions précédentes ne supportent pas cela, mon .vimrc
utilise à la place:
if exists('+colorcolumn')
set colorcolumn=80
else
au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
endif
Voir aussi de la documentation en ligne sur le colorcolumn
option .
je préfère:
highlight ColorColumn ctermbg=gray
set colorcolumn=80
la réponse de Simon Howard est excellente. Mais /\%81v.\+/
ne met pas en évidence les onglets qui dépassent la colonne 81 . Donc j'ai fait un petit ajustement, basé sur les trucs que j'ai trouvé sur vim wiki et le choix de couleurs de HS ci-dessus:
highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%>80v.\+/
et maintenant VIM mettra en évidence tout ce qui dépasse la colonne 80. Acclamations!
Minimaliste, pas-au-dessus de la démarche. Seul le 79ème caractère des lignes trop longues est mis en évidence. Il surmonte quelques problèmes courants: les travaux sur de nouvelles fenêtres, les mots débordants sont mis en évidence correctement.
augroup collumnLimit
autocmd!
autocmd BufEnter,WinEnter,FileType scala,java
\ highlight CollumnLimit ctermbg=DarkGrey guibg=DarkGrey
let collumnLimit = 79 " feel free to customize
let pattern =
\ '\%<' . (collumnLimit+1) . 'v.\%>' . collumnLimit . 'v'
autocmd BufEnter,WinEnter,FileType scala,java
\ let w:m1=matchadd('CollumnLimit', pattern, -1)
augroup END
Note: notez le FileType scala,java
cela limite cela aux fichiers source Scala et Java. Vous voudrez probablement personnaliser ceci. Si vous l'omettiez, cela fonctionnerait sur tous les types de fichiers.
vous pouvez aussi tracer une ligne pour voir la limite de 80:
let &colorcolumn=join(range(81,999),",")
let &colorcolumn="80,".join(range(400,999),",")
résultat:
les nouvelles versions de vim permettent une valeur :set numberwidth=x
, qui définit la largeur de l'affichage du numéro de ligne. Je n'utilise pas vraiment le pliage etc, donc je ne sais pas ce sujet. Le dessin d'une ligne verticale mince est au-delà des capacités d'une application de console cependant. GVim peut autoriser cela (je ne l'utilise pas, donc je ne peux pas le commenter).
j'ai bien peur que vous ayez mis des contraintes sur le jeu de solutions qui, bien, vous laissent avec le jeu nul.
L'utilisation de :set textwidth=80
va corriger tous les problèmes que vous avez mentionnés sauf que vous ne pouvez pas facilement voir la limite de ligne à venir. Si vous :set ruler
, vous activerez l'affichage de position x,y sur la barre d'état, que vous pouvez utiliser pour voir dans quelle colonne vous êtes.
à part ça, Je ne sais pas quoi vous dire. C'est une honte de perdre la colonne Nombre, plier colonne et se divise juste parce que vous devez :set columns=80
.
Vous pouvez essayer ceci:
au BufWinEnter * if &textwidth > 8
\ | let w:m1=matchadd('MatchParen', printf('\%%<%dv.\%%>%dv', &textwidth+1, &textwidth-8), -1)
\ | let w:m2=matchadd('ErrorMsg', printf('\%%>%dv.\+', &textwidth), -1)
\ | endif
qui mettra en place deux highlights dans chaque buffer, un pour les caractères dans les 8 colonnes avant quoi que votre &textwidth
soit défini, et un pour les caractères au-delà de cette colonne. De cette façon, vous avez une certaine anticipation. Bien sûr, vous pouvez le modifier pour utiliser une largeur différente si vous voulez plus ou moins d'anticipation (que vous payez sous forme de perte de mise en évidence syntaxique dans ces colonnes).
Eh bien, en regardant les colonnes d'aide, ce n'est pas vraiment être fait pour jouer avec.
dans console, il est généralement déterminé par le réglage de la console (c'est-à-dire qu'il est détecté automatiquement) ; dans GUI, il détermine (et est déterminé par) la largeur des fenêtres gvim.
donc normalement vous laissez juste les consoles et les gestionnaires de fenêtres faire leur travail en commentant le set columns
Je ne suis pas sûr de ce que vous voulez dire par " voir et anticiper la ligne de débordement".
Si vous voulez que la fin de semaine soit insérée à peu près à la colonne 80, utilisez soit set textwidth
ou set wrapmargin
; si vous voulez juste une enveloppe souple (c.-à-d. que la ligne est enveloppée, mais pas de fin de semaine réelle), alors jouez avec set linebreak
et set showbreak
.
celui-ci est hors champ de gauche mais c'est une belle petite carte pour redimensionner votre division actuelle à 80 caractères si vous avez les numéros de ligne sur:
" make window 80 + some for numbers wide
noremap <Leader>w :let @w=float2nr(log10(line("$")))+82\|:vertical resize <c-r>w<cr>
vous pouvez essayer ceci pour définir la taille de la fenêtre pour permettre 80 caractères de texte réel. Cela ne fonctionne toujours pas avec fentes verticales.
let &co=80 + &foldcolumn + (&number || &relativenumber ? &numberwidth : 0)
cela nécessite vim 7+, 7.3 Pour relativenumber.