J'essaie de faire en sorte que Vim mette en évidence les caractères non ASCII. Existe-t-il un paramètre, un modèle de recherche regex ou un plugin disponible pour le faire?
En utilisant la plage dans une []
classe de caractères dans votre recherche, vous devriez pouvoir exclure la plage de caractères hexadécimaux ASCII, mettant ainsi en évidence (en supposant que vous avez hlsearch
activé) tous les autres caractères situés en dehors de la plage ASCII:
/[^\x00-\x7F]
Cela fera une correspondance négative (via [^]
) pour les caractères entre ASCII 0x00
et ASCII 0x7F
(0-127), et semble fonctionner dans mon test simple. Pour l'ASCII étendu, bien sûr, étendez la plage jusqu'à au \xFF
lieu de l' \x7F
utiliser /[^\x00-\xFF]
.
Vous pouvez également l'exprimer en décimal via \d
:
/[^\d0-\d127]
Si vous avez besoin de quelque chose de plus spécifique, comme l'exclusion des caractères non imprimables, vous devrez ajouter ces plages dans la classe de caractères []
.
/[^\d0-\d127]
Oui, il existe une fonctionnalité native pour mettre en évidence toutes les chaînes correspondantes. Dans Vim, faites:
syn-match
définit une chaîne qui correspond à tomber dans 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:
la source
:
devant les commandes dans votre vimrc.termbg
ne semble pas être une commande légale dans VIM 7.3 tel qu'installé sur Ubuntu Server 12.10.termbg
ne semble pas être un paramètre légal dans VIM 7.3 tel qu'installé sur Ubuntu Server 12.10.term
ne peut pas avoir de couleur d'arrière-plan, alors que le terminal couleur lecterm
peut.Pour les autres (à partir de maintenant moins malchanceux) qui se retrouvent ici via un moteur de recherche et ne peuvent pas mettre en évidence des caractères non ASCII, essayez ceci (mettez ceci dans votre .vimrc):
Ceci a l'avantage supplémentaire de ne pas entrer en conflit avec les définitions de syntaxe régulières (basées sur le type de fichier [extension de fichier]).
la source
E319: Sorry, the command is not available in this version: au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" Press ENTER or type command to continue
Linux mint 17.3containedin=ALL
à la fin de la dernière ligne, ce qui en faitau BufReadPost * syntax match nonascii "[^\u0000-\u007F]" containedin=ALL
. Je trouve que la distraction en vaut la peine (lorsque l'unicode est autorisé), la réponse originale ici n'attrape pas des choses telles que le code non-ascii à l'intérieur d'uneif
déclaration ...autocmd BufRead ....
dans un autogroupe dans vim, sauf si vous avez une très bonne raison de ne pas ...Cette regex fonctionne également. C'était le premier hit google pour "vim remove non-ascii characters" de briceolion.com et
:set hlsearch
mettra en évidence:la source
:%s/[^[:alnum:][:punct:][:space:]]//gc
qui met en évidence en premier, puis remplace.Si vous êtes également intéressé par les caractères non imprimables , utilisez celui-ci:
/[^\x00-\xff]/
Je l'utilise dans une fonction:
la source
enc
enfenc
. J'ai changé l'encodage car mon encodage par défaut est (était en 2013) latin1. La fonction ne met pas en évidence les caractères non imprimables si le jeu de caractères est latin1. Pour voir la mise en évidence, vous devez avoir la cléERROR
dans votre fichier de syntaxe de couleur. C'est à moi:hi Error guifg=Black guibg=Orange
Sur la base des autres réponses sur ce sujet et de la réponse que j'ai ici, j'ai ajouté ceci à mon
.vimrc
, afin que je puisse contrôler la mise en évidence non-ascii en tapant<C-w>1
. Il affiche également les commentaires internes, bien que vous deviez ajouter le groupe de commentaires pour chaque syntaxe de fichier que vous utiliserez. Autrement dit, si vous éditez un fichier zsh, vous devrez ajouterzshComment
à la lignesinon, il n'affichera pas le caractère non-ascii (vous pouvez également définir containsin = ALL si vous voulez être sûr d'afficher les caractères non-ascii dans tous les groupes). Pour vérifier comment le commentaire est appelé sur un type de fichier différent, ouvrez un fichier du type souhaité et entrez
:sy
sur vim, puis recherchez les éléments de syntaxe pour le commentaire.la source
Aucune des réponses ci-dessus n'a fonctionné pour moi.
Alors j'ai utilisé
:1,$ s/[^0-9a-zA-Z,-_\.]//g
Il garde la plupart des personnages qui m'intéressent.
la source
Quelqu'un a déjà répondu à la question. Cependant, pour d'autres qui rencontrent encore des problèmes, voici une autre solution pour mettre en évidence les caractères non-ascii dans les commentaires (ou tout autre groupe de syntaxe en la matière). Ce n'est pas le meilleur, mais c'est une solution temporaire.
On peut essayer:
Cela a des pièces de mélange d'autres solutions. Vous pouvez supprimer
contained
, mais, de la documentation, il peut y avoir un problème potentiel de récurrence (si je comprends bien). Pour afficher d'autres modèles définis, lasyn-contains
section le contiendrait.Problème répliqué depuis: définir l'élément sur une priorité de surbrillance plus élevée sur vim
la source