VIM Find and Replace

Vi/Vim est l’un des éditeurs de texte légendaires qui existe et qui trouve toujours sa place dans l’arsenal des utilisateurs avancés et professionnels. Vim est particulièrement populaire parmi les programmeurs. Chaque distro Linux inclut Vim par défaut. Si vous exécutez un système non-Linux, vous devriez quand même pouvoir profiter de cet éditeur de texte de qualité à partir de n’importe quel système. Obtenez Vim.

Pourquoi cet ancien logiciel est-il toujours d’actualité ? Parce qu’il est léger, qu’il offre des raccourcis clavier pour presque toutes les fonctions, des recherches d’expressions intégrées et un écosystème de plugins robuste, stable et sain. Sans oublier les autres fonctionnalités d’un éditeur de texte moderne, comme une magnifique coloration syntaxique. Vim est surtout populaire auprès des programmeurs, car il nécessite une grande attention au clavier. C’est une bonne pratique pour les programmeurs.

Comme le suggère le titre de l’article, l’objectif de ce guide est de vous offrir une meilleure compréhension des fonctionnalités de recherche et de remplacement de Vim. Vim n’est pas un outil dont il faut avoir peur. En fait, c’est l’un des superpouvoirs que vous aurez toujours à vos côtés.

Dans un premier temps, il nous faut un texte de démonstration. Pour apprendre Vim, le moyen le plus sûr est de créer un fichier texte jetable et de faire ce que vous voulez avec. De cette façon, même si quelque chose ne va pas, rien d’important ne sera perdu.

J’utilise Manjaro Linux comme système Linux. Découvrez comment installer Manjaro Linux. C’est une distro basée sur Arch qui utilise pacman comme gestionnaire de paquets par défaut. J’ai généré un fichier texte contenant tous les paquets installés sur mon système.

pacman -Qqe >> PackageList.txt

cat PackageList.txt

Maintenant, lancez le fichier texte dans Vim!

vim PackageList.txt

Recherche dans Vim

Pour la recherche, Vim utilise la structure suivante.

?<search_string>

Par exemple, recherchons « python ».

?python

Par défaut, la recherche s’arrête à un résultat fixe. Pour passer au résultat de recherche suivant/précédent, utilisez les touches suivantes.

Note : n’oubliez pas d’appuyer sur la touche Entrée avant d’utiliser les touches suivantes. Sinon, le terme de recherche changera!

n – Trouver la correspondance suivante
N – Trouver la correspondance précédente

Ce n’est que la façon de base de faire une recherche. Essayons une méthode un peu plus puissante.

/\<search_string>>

Ici, \< est chargé d’indiquer le début de la chaîne de recherche et /> est chargé de la fin de la chaîne.

Comme dans l’exemple précédent, utilisez n ou N (selon la casse) pour naviguer dans les résultats de la recherche.

La recherche prend également en charge l’utilisation de caractères génériques. Par exemple, il existe de nombreux paquets avec l’extension « python-« .

Pour les rechercher tous, nous pouvons utiliser « python* ». Ici, l’astérisque indique que tout ce qui suit le préfixe « python ». Pour toute recherche, l’astérisque peut se trouver n’importe où sur le terme recherché. Où qu’il se trouve, il indique à Vim de remplir l’espace avec toutes les données possibles du fichier texte entier.

/\<

python*/>

Lorsque vous effectuez une recherche, Vim placera toujours le curseur sur le caractère de départ des correspondances. Il s’agit de l’action par défaut. Ne vous inquiétez pas ; Vim permet de modifier la position par défaut de l’atterrissage du curseur.

/python/e

Ici, le dernier « e » indique d’atteindre le curseur à la fin de la phrase correspondante. En utilisant l’exemple suivant, vous pouvez également dire d’atterrir le curseur en dessous ou au-dessus du résultat de la recherche.

/<search_string>/+2

.

<search_string>/-3

Il est également possible de décaler le curseur du début/de la fin des correspondances de recherche. Par exemple, la commande suivante fera atterrir le curseur à 3 caractères à côté du début.

/<search_string>/s+3

.

/<search_string>/b+3

Ici, le « s » indique le début, « +3 » indique 3 caractères à partir du début. « b » signifie « commencer ». Il fonctionne également de manière similaire à « s ». D’après la capture d’écran, Vim traduira automatiquement « b » en « s ».

Si vous souhaitez vous décaler de la fin des correspondances de recherche, utilisez « e ».

/<search_string/e-2

Voici une autre façon géniale d’effectuer une recherche sur un fichier texte.

:%s/<search_pattern>//gn

Une explication détaillée de la commande se trouve sur la section suivante de l’article.

Vim replace

Trouver et remplacer est une autre fonction courante et indispensable pour tout éditeur de texte de qualité. Vim, étant une légende, offre un moyen robuste de trouver et de remplacer votre texte désiré d’une manière simple. La commande de la fonction est simple mais permet de faire des travaux vraiment complexes.

:<range> s/<search_string><replace_string><modifier>

Décomposons chaque partie.

  • plage – Définit la plage d’exécution de la fonction « trouver et remplacer ». Il existe 2 valeurs différentes.
    • % – Effectuer sur le fichier entier
    • <start _line><end_line> – Effectuer l’action sur un certain ensemble de lignes.
  • search_string – La chaîne que vous devez remplacer.
  • replace_string – La nouvelle chaîne qui remplacera l’ancienne.
  • modifier – Déterminer le comportement de remplacement. Il existe plusieurs valeurs différentes.
    • g – Option « globale ». Effectuer le remplacement sur chaque occurrence d’une ligne.
    • gc – Demander une confirmation avant d’effectuer chaque remplacement.
    • gn – Ignorer la fonction de remplacement et mettre en évidence les trouvailles.

Par exemple, remplaçons tous les « python » par « Python3 ».

:%s/python/Python3/g

Simple, non ? Maintenant, vérifions celui qui suit.

:%s/python/Python3/gc

Il existe une poignée d’actions que vous pouvez choisir. Si certaines d’entre elles vous sont familières, d’autres ne le sont pas. Voyons ce qu’elles signifient.

  • y – Autoriser l’exécution du changement.
  • n – Interdire l’exécution du changement.
  • a – Substituer tout.
  • q – Quitter la tâche.
  • l – Il suffit de substituer cette occurrence. Puis, quittez.
  • ^E (Ctrl + E) – Faire défiler un écran vers le haut
  • ^Y (Ctrl + Y) – Faire défiler un écran vers le bas

Maintenant, essayons la partie plage. Dans l’exemple précédent, nous avons déjà utilisé la plage  » % « . Maintenant, il est temps de confiner nos recherches dans un certain nombre de lignes.

:200,250 s/python/Python3/g

La recherche commencera à la ligne 200 et se terminera à la ligne 250. Entre les limites, toute l’entrée « python » sera changée en « Python3 ».

Cette fonction n’est pas seulement limitée à un terme de recherche. Vous pouvez inclure plusieurs termes de recherche !

:%s/<search_term_1><search_term_2><search_term_3>
/<replace_string>/g

Essayons de changer toutes les entrées « python » et « py » en « Python3 ».

:%s/python\|py/Python3/g

Sensibilité à la casse

Toutes les astuces décrites précédemment dans le guide sont très sensibles à la casse. Vous devez vraiment vous assurer qu’à chaque fois que vous travaillez, vous tapez les caractères dans la bonne casse. Par exemple, « Python », « python », « PYTHON », etc. sont tous des entrées différentes.

Si vous ne vous souvenez pas de la casse, dites simplement à Vim de devenir insensible à la casse !

/<search_term>\c
:%s/<search_term>\c/<replace_term>/g

.

Cette insensibilité peut également être activée directement depuis le fichier vimrc.

set ignorecase

Voici une autre option intéressante.

set smartcase

Le « ignorecase » va forcer Vim à ignorer la sensibilité à la casse. Cependant, s’il y a une majuscule dans votre recherche, le « smartcase » permettra à Vim de redevenir sensible à la casse.

Note : pour que « smartcase » fonctionne, il faut d’abord « ignorecase ».

Pensées finales

Il y a plein de choses que vous pouvez effectuer avec Vim. C’est comme l’éditeur de texte ultime dont vous aurez jamais besoin. Tout ce dont vous avez besoin, c’est juste de la patience et un peu de pratique.

Amusez-vous bien !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *