web-dev-qa-db-fra.com

Affichage des espaces de fin dans vim

J'ai défini les options suivantes dans .vimrc

set listchars=tab:▸\ ,trail:·
set list

Et je m'attendais à voir des points dans les endroits où les espaces sont utilisés pour la tabulation dans le code (j'utilise des espaces, pas des tabulations). Cependant, le résultat est différent:

enter image description here

Pourriez-vous s'il vous plaît recommander comment atteindre le résultat souhaité? Merci!

43
lyuba

Vous devriez vérifier ce lien . J'utilise la solution de commande match:

:highlight ExtraWhitespace ctermbg=red guibg=red
:match ExtraWhitespace /\s\+$/

Cette page fournit également list solutions basées que je n'ai pas personnellement essayées.

95
icecrime

Et je m'attendais à voir des points dans les endroits où les espaces sont utilisés pour la tabulation dans le code (j'utilise des espaces, pas des tabulations)

En fait, c'est l'inverse, l'option tab est utilisée pour afficher un caractère lorsqu'un caractère de tabulation est inséré (\ t) au lieu d'espaces. Et trail est utilisé pour afficher les espaces de fin à la fin des lignes.

Vous semblez avoir une seule ligne vide avec des espaces de fin et les points sont correctement affichés.

Si vous n'utilisez que des espaces, l'option tab n'est pas utilisée ou affichée.

7
Xavier T.

Le plugin vim-better-whitespace incorpore de nombreux conseils de la page Wiki Vim référencés dans la réponse de @ icecrime. Il a également quelques options de configuration astucieuses.

J'ai installé pathogen.vim juste pour utiliser ce plugin et je suis satisfait de ma vie, tout bien considéré.

5
jtpereyda

Pour mettre en surbrillance les derniers espaces:

:set hlsearch, puis

/\s\+$

0
Sky

Sur la base du lien publié par icecrime, je trouve que cela fonctionne assez bien ...

" Be clever about highlighting trailing whitespace (don't highlight it if we are
" in 'insert' mode and the cursor is at the end of the line). Also (regardless
" of 'insert' mode), highlight any tabs that immediately follow space(s).
" EOLWS and EOLWSInsert are colour group names; the latter being toned-down to
" make editing in 'insert' mode easier on the eye
autocmd InsertEnter * match EOLWS // | match EOLWSInsert /\s\+\%#\@<!$\| \+\ze\t/
autocmd InsertLeave * match EOLWSInsert // | match EOLWS /\s\+$\| \+\ze\t/
autocmd WinEnter,BufWinEnter,WinNew * match EOLWS /\s\+$\| \+\ze\t/

" Disable syntax-specific trailing space error handling because it conflicts
" with the above, mostly because the syntax highlighting doesn't take account of
" whether 'insert' mode is active or not. There are other '*_no_trail_space_error'
" settings - refer to syntax files in $VIMRUNTIME/syntax/
let c_no_trail_space_error = 1
let Java_no_trail_space_error = 1

En outre, assurez-vous que le groupe de surbrillance "Erreur" n'est PAS défini comme vidéo inverse - s'il l'est, il entre en conflit de manière étrange avec ce qui précède

0
Rich