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?
Réponses
Trop de publicités?À 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 []
.
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
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]).
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