171 votes

Comment amener Vim à mettre en évidence des caractères non-ASCII?

J'essaie de faire en sorte que Vim mette en surbrillance les caractères non-ASCII. Je me demandais s'il y avait un paramètre ou un plugin pour le faire?

325voto

Michael Berkowski Points 137903

À l'aide de gamme dans un [] classe de personnage dans votre recherche, vous devriez être en mesure d' exclure l'ASCII hexadécimal de la gamme de caractères, par conséquent, mettant en évidence (en supposant que vous avez hlsearch activé) tous les autres personnages:

/[^\x00-\x7F]

Cela va faire un négatif match (via [^]) pour les caractères ASCII 00 et ASCII 7F (0-127), et semble fonctionner dans mon test simple. Pour l'ASCII étendu, bien sûr, d'étendre la gamme de jusqu'à \xFF au lieu de \x7F.

Si vous avez besoin de quelque chose de plus précis, comme l'exclusion de caractères non-imprimables, il vous faudra ajouter les plages dans la classe de caractères [].

40voto

Steven Ding Points 47

Oui, il existe une fonctionnalité native à mettre en surbrillance pour toutes les chaînes correspondantes. Dans Vim, faites:

 :help highlight
:help syn-match
 

syn-match définit une chaîne qui correspond à un groupe. highlight définit la couleur utilisée par le groupe. Pensez simplement à la coloration syntaxique de vos fichiers vimrc.

Vous pouvez donc utiliser les commandes ci-dessous dans votre fichier .vimrc:

 syntax match nonascii "[^\x00-\x7F]"
highlight nonascii guibg=Red ctermbg=2 termbg=2
 

18voto

PAStheLoD Points 441

Pour les autres personnes (désormais moins malchanceuses) qui se retrouvent ici via un moteur de recherche et qui ne peuvent pas souligner les caractères non-ASCII, essayez ceci (mettez ceci dans votre fichier .vimrc):

 highlight nonascii guibg=Red ctermbg=1 term=standout
au BufReadPost * syntax match nonascii "[^\u0000-\u007F]"
 

Cela présente l’avantage supplémentaire de ne pas entrer en conflit avec les définitions de syntaxe habituelles (basées sur un filetype [extension de fichier]).

4voto

Remonn Points 1971

Si vous êtes également intéressé par les caractères non imprimables , utilisez celui-ci: /[^\x00-\xff]/

Je l'utilise dans une fonction:

  function! NonPrintable()
   setlocal enc=utf8
   if search('[^\x00-\xff]') != 0
     call matchadd('Error', '[^\x00-\xff]')
     echo 'Non printable characters in text'
   else
     setlocal enc=latin1
     echo 'All characters are printable'
   endif
 endfunction
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X