Bien débuter avec Vim: Recherche de texte
Aujourd’hui je montre comment rechercher une chaîne de caractères dans un fichier avec Vim: les commandes, les options et un petit truc en plus…
Les commandes utiles
Pour rechercher un texte dans le fichier, on utilise la commande /
suivie
du texte à rechercher et de la touche entrée. Ainsi:
/texte
va chercher toutes les occurences de «texte» dans le fichier.
Pour se déplacer parmi les occurences trouvées, on utilise n
et N
. n
va à l’occurence suivante tandis que N
va à l’occurence précédente.
Attention, la commande de recherche /
ne tient pas compte des mots.
Je m’explique: /xxx
va trouver les 4 expressions suivantes.
- xxx
- aaaxxx
- xxxbbb
- aaaxxxbbb
Parfois c’est ce que l’on veut, parfois non. Pour modifier ce comportement
on utilise \<
et \>
, respectivement pour signifier le début et la fin
d’un mot. Ainsi \<xxx\>
ne trouvera que l’expression n° 1. \<xxx
trouvera
la n° 1 et la n° 3. Quand à /xxx\>
, elle trouvera la n° 1 et la n° 2.
Les options
Voici quelques options à utiliser dans votre fichier .vimrc.
set incsearch
La recherche sera mise en évidence au fur et à mesure de la frappe clavier,
et non pas seulement après la touche entrée. incsearch
signifie
incremental search.
set ignorecase smartcase
Ces deux options marchent souvent de pair. ignorecase
permet d’ignorer la
différence minuscule/majuscule, ainsi /texte
trouvera «texte», «TEXTE» et
«Texte». smartcase
repassera en mode différenciation des
minuscules/majuscules si vous saisissez une majuscule, ainsi /Texte
trouvera
«Texte» mais pas «TEXTE» ni «texte».
set hlsearch
Cette option sert à mettre en évidence la recherche, autrement dit à la surligner.
Supprimer la mise en évidence du texte après une recherche
Une fois que vous avez fait ce que vous aviez à faire avec votre recherche,
celle-ci reste surlignée, ce qui devient vite très agaçant (pour rester poli).
Pour effacer le surlignage, on utilise la commande nohlsearch
:
:nohlsearch
On aura évidemment intérêt à mapper cette commande, par exemple sur
<Leader>h
:
nnoremap <Leader>h :nohlsearch<CR>
Personnellement, je n’ai pas de mappage pour cette commande: je ne m’en
sert tout simplement pas. Pour supprimer la mise en évidence de la
dernière recherche je tape juste /xx
. Vous pouvez utiliser /yy
ou /ww
ou tout ce qui tombe bien sous vos doigts. Le principe est de rechercher
une chaîne qui n’existe pas, ce qui a pour effet d’effacer la dernière
mise en évidence.
À demain.