1859 votes

Comment faire une recherche insensible à la casse dans Vim

Je voudrais chercher un mot en majuscule, par exemple COPYRIGHT dans un fichier. J'ai essayé d'effectuer une recherche comme:

/copyright/i    # Ne fonctionne pas

mais cela ne fonctionne pas. Je sais qu'en Perl, si je donne le drapeau i dans une regex, cela transformera la regex en une regex insensible à la casse. Il semble que Vim ait sa propre façon d'indiquer une regex insensible à la casse.

2385voto

Chinmay Kanchi Points 16353

Vous pouvez utiliser la séquence d'échappement \c n'importe où dans le motif. Par exemple :

/\cdroits d'auteur ou /droits d'auteur\c ou même /droits\cd'auteur

Pour faire l'inverse (correspondance sensible à la casse), utilisez \C (C majuscule) à la place.

552 votes

Aussi, \c peut apparaître n'importe où dans le motif, donc si vous saisissez un motif puis décidez que vous voulez une recherche insensible à la casse, ajoutez simplement un \c à la fin.

305 votes

J'aime ajouter set ignorecase pour une recherche insensible à la casse dans mon vimrc, et je peux utiliser \C pour effectuer une recherche sensible à la casse similaire à ce que @AlokSinghal a mentionné.

191 votes

Il y a aussi set smartcase qui basculera automatiquement vers une recherche sensible à la casse si vous utilisez des lettres majuscules.

762voto

DrAl Points 29528

Tout comme les suggestions pour \c et ignorecase, je trouve le smartcase très utile. Si vous recherchez quelque chose contenant des caractères en majuscule, cela fera une recherche sensible à la casse; si vous recherchez quelque chose en minuscules, cela fera une recherche insensible à la casse. Vous pouvez utiliser \c et \C pour remplacer cela :

:set ignorecase
:set smartcase
/copyright      " Recherche insensible à la casse
/Copyright      " Recherche sensible à la casse
/copyright\C    " Recherche sensible à la casse
/Copyright\c    " Recherche insensible à la casse

Voir :

:help /\c
:help /\C
:help 'smartcase'

95 votes

Le problème avec ignorecase est qu'il affecte aussi bien les substitutions que les recherches. Je trouve que cela a du sens d'avoir des recherches (intelligentes) insensibles à la casse, mais des substitutions sensibles à la casse par défaut. Mais je ne connais aucun moyen de le faire.

162 votes

Il convient de noter que pour que smartcase fonctionne, vous avez également besoin de set ignorecase. Excellente astuce cependant, merci!

13 votes

Je crois que vous pourriez simplement utiliser un \C dans votre expression de recherche pour les substitutions, comme ceci : :%s/recherchelocale\C/chaîne de remplacement/g. Cela ne crée pas la fonctionnalité par défaut que vous désirez, mais cela vous permet de forcer la sensibilité à la casse pour les remplacements tout en bénéficiant toujours de la recherche intelligent lors de la recherche.

327voto

Nathan Fellman Points 31310

Vous pouvez définir l'option ic dans Vim avant la recherche :

:set ic

Pour revenir aux recherches sensibles à la casse, utilisez :

:set noic

ic est un raccourci pour ignorecase

1 votes

Aussi votre seule option si vous avez la malchance d'utiliser encore Vi au lieu de Vim. \c ne fonctionne pas dans vi.

68voto

Paolo Tedesco Points 22442

Vous pouvez taper la commande

:set ignorecase

et après cela, vos recherches seront insensibles à la casse.

51voto

vbd Points 1006

Pour basculer entre une recherche respectant la casse et une recherche ignorant la casse, j'utilise ce mappage dans mon .vimrc

nmap :set ignorecase! ignorecase?

16 votes

Oui, mais ignorecase? vous montre l'état actuel du drapeau. (dans la ligne de commande)

1 votes

Merci! Pour moi, c'est la réponse la plus utile sur la page : un moyen de basculer rapidement entre les deux modes en fonction de ce que vous recherchez à cet instant précis.

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