Linux

Rechercher et remplacer dans Vim / Vi

Rechercher et remplacer dans Vim / Vi

Cet article décrit comment rechercher et remplacer du texte dans Vim / Vi.

Vim est l'éditeur de texte en ligne de commande le plus populaire. Il est préinstallé sur macOS et la plupart des distributions Linux. Trouver et remplacer du texte dans Vim est rapide et facile.

Rechercher et remplacer de base #

Dans Vim, vous pouvez rechercher et remplacer du texte en utilisant le :remplacer (:s) commande.

Pour exécuter des commandes dans Vim, vous devez être en mode normal, le mode par défaut au démarrage de l'éditeur. Pour revenir au mode normal à partir de n'importe quel autre mode, appuyez simplement sur la touche 'Esc'.

La forme générale de la commande de substitution est la suivante :

:[plage]s/motif/chaîne/[drapeaux] [nombre] 

La commande recherche chaque ligne dans [intervalle] pour un schéma, et le remplace par un chaîne. [compter] est un entier positif qui multiplie la commande.

Sinon [intervalle] et [compter] sont donnés, seul le motif trouvé dans la ligne courante est remplacé. La ligne courante est la ligne où le curseur est placé.

Par exemple, pour rechercher la première occurrence de la chaîne 'foo' dans la ligne actuelle et la remplacer par 'bar', vous utiliserez :

:s/foo/bar/ 

Pour remplacer toutes les occurrences du motif de recherche dans la ligne actuelle, ajoutez le g drapeau:

:s/foo/bar/g 

Si vous souhaitez rechercher et remplacer le motif dans l'ensemble du fichier, utilisez le caractère de pourcentage % comme une gamme. Ce caractère indique une plage de la première à la dernière ligne du fichier :

:%s/foo/bar/g 

Si la chaîne partie est omise, elle est considérée comme une chaîne vide et le motif correspondant est supprimé. La commande suivante supprime toutes les instances de la chaîne « foo » dans la ligne actuelle :

:s/foo//g 

Au lieu du caractère barre oblique (/), vous pouvez utiliser tout autre caractère non alphanumérique à un octet, sauf comme délimiteur. Cette option est utile lorsque vous avez le caractère '/' dans le motif de recherche ou la chaîne de remplacement.

:s|foo|bar| 

Pour confirmer chaque substitution, utilisez le c drapeau:

:s/foo/bar/gc 
remplacer par une barre (y/n/a/q/l/^E/^Y)? 

presse oui pour remplacer l'allumette ou je pour remplacer le match et quitter. presse m sauter le match et q ou alors Esc quitter la substitution. le une l'option remplace la correspondance et toutes les occurrences restantes de la correspondance. Pour faire défiler l'écran vers le bas, utilisez CTRL+Y, et pour faire défiler vers le haut, utilisez CTRL+E.

Vous pouvez également utiliser des expressions régulières comme modèle de recherche. La commande ci-dessous remplace toutes les lignes commençant par « foo » par « Vim est le meilleur » :

:%s/^foo.*/Vim est le meilleur/gc 

le ^ (caret) correspond au début d'une ligne et .* correspond à n'importe quel nombre de n'importe quel caractère.

Sensibilité à la casse #

Par défaut, l'opération de recherche est sensible à la casse ; la recherche de « FOO » ne correspondra pas à « Foo ».

Pour ignorer la casse pour le motif de recherche, utilisez le je drapeau:

:s/Foo/bar/gi 

Une autre façon de forcer à ignorer la casse est d'ajouter \c après le modèle de recherche. Par example, /Linux\c effectue une recherche d'ignorer la casse.

Si vous avez modifié le paramètre de casse par défaut et que vous souhaitez effectuer une recherche sensible à la casse, utilisez le je drapeau:

:s/foo/bar/gi 

Majuscule \C après le motif force également la recherche de correspondance de casse.

# de la plage de recherche

Lorsqu'aucune plage n'est spécifiée, la commande de substitution ne fonctionne que dans la ligne actuelle.

La plage peut être soit une ligne, soit une plage entre deux lignes. Les spécificateurs de ligne sont séparés par le , ou alors ; personnages. La plage peut être spécifiée à l'aide du numéro de ligne absolu ou de symboles spéciaux.

Par exemple, pour remplacer toutes les occurrences de 'foo' par 'bar' dans toutes les lignes à partir de la ligne 3 jusqu'à la ligne 10, vous utiliserez :

:3,10s/foo/bar/g 

La plage est inclusive, ce qui signifie que la première et la dernière ligne sont incluses dans la plage.

Le point . caractère indique la ligne courante et $ - le dollar signe la dernière ligne. Pour substituer 'foo' dans toutes les lignes à partir de la ligne actuelle jusqu'à la dernière :

:.,$s/foo/bar/ 

Le spécificateur de ligne peut également être défini à l'aide du symbole « + » ou « - », suivi d'un nombre qui est ajouté ou soustrait du numéro de ligne précédent. Si le nombre après le symbole est omis, sa valeur par défaut est 1.

Par exemple, pour remplacer chaque "foo" par "bar" à partir de la ligne actuelle et des quatre lignes suivantes, tapez :

:.,+4s/foo/bar/g 

Substitution du mot entier #

La commande de substitution recherche le motif sous forme de chaîne, pas un mot entier. Si, par exemple, vous recherchiez « gnu », la recherche trouve des correspondances où « gnu » est intégré dans des mots plus gros, tels que « cygnus » ou « magnum ».

Pour rechercher un mot entier, tapez \< pour marquer le début d'un mot, entrez le motif de recherche, tapez \> pour marquer la fin d'un mot :

Par exemple, pour rechercher le mot « foo », vous utiliseriez \:

:s/\/bar/ 

Historique de remplacement #

Vim garde une trace de toutes les commandes que vous exécutez dans la session en cours. Pour parcourir l'historique des commandes de substitution précédentes, saisissez :s et utilisez les touches fléchées haut/bas pour rechercher une opération de remplacement précédente. Pour exécuter la commande, appuyez simplement sur Entrer. Vous pouvez également modifier la commande avant d'effectuer l'opération.

Exemples #

Lignes de commentaires (ajouter # avant la ligne) de 5 à 20 :

:5,20s/^/#/ 

Décommentez les lignes de 5 à 20, annulez les modifications précédentes :

:5,20s/^#// 

Remplacez toutes les instances de 'apple', 'orange' et 'mango' par 'fruit' :

:%s/pomme\|orange\|mangue/fruit/g 

Supprimez les espaces à la fin de chaque ligne :

:%s/\s\+$//e 

Conclusion #

La recherche et le remplacement sont une fonctionnalité puissante de Vim, qui vous permet d'apporter des modifications à votre texte rapidement.

N'hésitez pas à laisser un commentaire si vous avez des questions.

Comment capturer et diffuser votre session de jeu sur Linux
Dans le passé, jouer à des jeux n'était considéré qu'un passe-temps, mais avec le temps, l'industrie du jeu a connu une croissance énorme en termes de...
Meilleurs jeux à jouer avec le suivi des mains
Oculus Quest a récemment introduit l'idée géniale du suivi manuel sans contrôleurs. Avec un nombre toujours croissant de jeux et d'activités qui exécu...
Comment afficher la superposition OSD dans les applications et jeux Linux en plein écran
Jouer à des jeux en plein écran ou utiliser des applications en mode plein écran sans distraction peut vous couper des informations système pertinente...