Photo courtoisie :B Zedan
Cet article fait partie de la série Vi / Vim Tips and Tricks en cours. Vim est généralement mentionné comme éditeur de texte, et non comme créateur de texte. Pourquoi ? Parce que nous passons beaucoup de temps à éditer un texte existant plutôt qu'à créer un nouveau texte. Dans l'édition de texte, les substitutions de texte/motif deviennent une partie vitale.
Dans cet article, voyons comment exécuter les fonctions de substitution de texte et de motif de base et avancées dans Vi et Vim Editor . Ces fonctionnalités sont expliquées à l'aide de 12 exemples de substitution de texte très pratiques et puissants. .
Syntaxe de la substitution de texte dans l'éditeur vim :
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
Voici trois drapeaux possibles.
- [c] Confirmez chaque substitution.
- [g] Remplacez toutes les occurrences de la ligne.
- [i] Ignorer la casse pour le motif.
Exemple 1. Remplacer toutes les occurrences d'un texte par un autre texte dans tout le fichier
C'est l'utilisation fondamentale de base de la substitution de texte dans l'éditeur Vi. Lorsque vous souhaitez qu'un texte spécifique soit remplacé par un autre texte dans l'ensemble du fichier, vous pouvez utiliser la séquence suivante.
:%s/old-text/new-text/g
- %s – spécifie toutes les lignes. Spécifier la plage sous la forme '%' signifie effectuer une substitution dans l'ensemble du fichier.
- g – spécifie toutes les occurrences de la ligne. Avec le drapeau 'g', vous pouvez faire en sorte que toute la ligne soit remplacée. Si ce drapeau « g » n'est pas utilisé, seule la première occurrence de la ligne sera remplacée.
Exemple 2. Substitution d'un texte par un autre texte sur une seule ligne
Lorsque vous souhaitez qu'un texte spécifique soit remplacé par un autre texte sur une seule ligne sans tenir compte de la casse. Ne spécifier aucune plage signifie effectuer la substitution dans la ligne actuelle uniquement. Avec le drapeau "i", vous pouvez rendre le texte de recherche de remplacement insensible à la casse.
:s/I/We/gi
Exemple 3. Substitution d'un texte par un autre texte dans un intervalle de lignes
Avec la plage, vous pouvez faire en sorte qu'une seule plage de ligne soit affectée à la substitution. Spécifier 1, 10 comme plage signifie, effectuer la substitution uniquement dans les lignes 1 à 10.
:1,10s/helo/hello/g
Exemple 4. Substitution d'un texte par un autre texte par sélection visuelle de lignes
Vous pouvez également sélectionner des lignes spécifiques en sélectionnant visuellement ces lignes. Appuyez sur CTRL + V en mode commande, utilisez les touches de navigation pour sélectionner la partie du fichier que vous souhaitez remplacer. Appuyez sur ':' qui sera automatiquement formé comme :'<,'> Ensuite, vous pouvez utiliser le substitut normal comme
:'<,'>s/helo/hello/g
Exemple 5. Substitution d'un texte par un autre texte uniquement le 1er X nombre de lignes
En utilisant count in substitution, Si vous spécifiez le nombre N dans la substitution, cela signifie effectuer une substitution dans N lignes à partir de la position actuelle du curseur. faire une substitution sur 4 lignes à partir de la ligne courante.
:s/helo/hello/g 4
Exemple 6. Remplacer uniquement le mot entier et non la correspondance partielle
Supposons que vous vouliez changer uniquement le mot entier « son » en « elle » dans le texte original mentionné ci-dessous. Si vous effectuez la substitution standard, en plus de changer his en her, cela changera également This en Ther comme indiqué ci-dessous.
Remplacement standard
Original Text: This is his idea :s/his/her/g Translated Text: Ther is her idea
Substitution de mots entiers
Original Text: This is his idea :s/\<his\>/her/ Translated Text: This is her idea
Remarque : :Vous devez entourer le mot de
Exemple 7. Remplacez mot1 ou mot2 par un nouveau mot en utilisant une expression régulière
Dans l'exemple suivant, toutes les occurrences de good ou nice seront remplacées par awesome.
Original Text: Linux is good. Life is nice. :%s/\(good\|nice\)/awesome/g Translated Text: Linux is awesome. Life is awesome.
Vous pouvez également effectuer une substitution en spécifiant une expression régulière. L'exemple suivant fait la substitution de hey ou hi à hai. Veuillez noter que cela ne remplace pas les mots "ils", "ceci".
:%s/\<\(hey\|hi\)\>/hai/g
- \<– limite du mot.
- \| – "ou logique" (dans ce cas hey ou hi)
Exemple 8. Recherche et remplacement interactifs dans l'éditeur Vim
Vous pouvez effectuer une recherche et un remplacement interactifs à l'aide du drapeau "c" dans le substitut, qui vous demandera de confirmer la substitution ou de l'ignorer, comme expliqué ci-dessous. Dans cet exemple, l'éditeur Vim effectuera une recherche globale du mot « génial » et le remplacera par « merveilleux ». Mais il effectuera le remplacement uniquement en fonction de votre entrée, comme expliqué ci-dessous.
:%s/awesome/wonderful/gc replace with wonderful (y/n/a/q/l/^E/^Y)?
- y – Remplacera le mot actuel en surbrillance. Après le remplacement, il mettra automatiquement en surbrillance le mot suivant correspondant au modèle de recherche
- n – Ne remplacera pas le mot actuel en surbrillance. Mais il mettra automatiquement en surbrillance le mot suivant correspondant au modèle de recherche
- a - Remplacera automatiquement tous les mots en surbrillance qui correspondent aux critères de recherche.
- l - Cela remplacera uniquement le mot en surbrillance actuel et mettra fin à l'effort de recherche et de remplacement.
Exemple 9. Remplacer toutes les lignes par son numéro de ligne.
Lorsque la chaîne commence par '\=', elle doit être évaluée comme une expression. En utilisant la fonction "ligne", nous pouvons obtenir le numéro de ligne actuel. En combinant les deux fonctionnalités, la substitution effectue la numérotation de toutes les lignes.
:%s/^/\=line(".") . ". "/g
Remarque : Ceci est différent du ":set number" où il n'écrira pas les numéros de ligne dans le fichier. Mais lorsque vous utilisez cette substitution, vous rendez ces numéros de ligne disponibles de manière permanente dans le fichier.
Exemple 10. Remplacer un caractère spécial par sa valeur équivalente.
Remplacer le ~ par la valeur de la variable $HOME.
Original Text: Current file path is ~/test/ :%s!\~!\= expand($HOME)!g Translated Text: Current file path is /home/ramesh/test/
Vous pouvez utiliser la fonction d'expansion pour utiliser toutes les variables prédéfinies et définies par l'utilisateur disponibles.
Exemple 11. Modifier le numéro de séquence dans une liste numérotée lors de l'insertion d'un nouvel élément
Supposons que vous ayez une liste numérotée comme celle-ci dans un fichier texte. Dans cet exemple, supposons que vous souhaitiez ajouter une nouvelle ligne après l'article 2. Pour cela, vous devez modifier le nombre de tous les autres articles en conséquence.
vi / vim tips & tricks series Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File Article 3: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X Article 4: Vi and Vim Macro Tutorial: How To Record and Play Article 5: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin Article 6: How To Add Bookmarks Inside Vim Editor Article 7: Make Vim as Your Bash-IDE Using bash-support Plugin Article 8: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map Article 9: 8 Essential Vim Editor Navigation Fundamentals Article 10: Vim Editor: How to Correct Spelling Mistakes Automatically Article 11: Transfer the Power of Vim Editor to Thunderbird for Email Article 12: Convert Vim Editor to Beautiful Source Code Browser
3e article "Faites de Vim votre IDE Perl à l'aide du plugin perl-support.vim" a été manqué. Donc, lorsque vous voulez
l'ajouter, vous voulez changer "l'article 3" en "article 4", "l'article 4" en "article 5", jusqu'à "l'article 12" en "article 13".
Ceci peut être réalisé par la commande de substitution vim suivante.
:4,$s/\d\+/\=submatch(0) + 1/
- Plage :4 $ – de la 4e ligne à la dernière ligne.
- Modèle de recherche – \d\+ – séquence de chiffres
- Modèle à remplacer – \=submatch(0) + 1 – obtient le modèle correspondant et lui ajoute 1.
- Drapeau - comme il n'y a pas de drapeau, par défaut, il remplace uniquement la première occurrence.
Après avoir exécuté la déclaration de substitution, le fichier deviendra comme ceci, où vous pourrez
ajouter le 3ème article.
vi / vim tips & tricks series Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File Article 4: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X Article 5: Vi and Vim Macro Tutorial: How To Record and Play Article 6: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin Article 7: How To Add Bookmarks Inside Vim Editor Article 8: Make Vim as Your Bash-IDE Using bash-support Plugin Article 9: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map Article 10: 8 Essential Vim Editor Navigation Fundamentals Article 11: Vim Editor: How to Correct Spelling Mistakes Automatically Article 12: Transfer the Power of Vim Editor to Thunderbird for Email Article 13: Convert Vim Editor to Beautiful Source Code Browser
Remarque :Vérifiez que la substitution a changé le 3 en 4, le 4 en 5 et ainsi de suite. Maintenant, nous pouvons ajouter une nouvelle ligne en le mentionnant comme article 3, et il n'est pas nécessaire d'effectuer de modifications manuelles.
Exemple 12. Remplacer les débuts de phrase par des majuscules. (c'est-à-dire la casse du titre de l'ensemble du document).
Lors du formatage d'un document, la casse du titre est également une chose importante. Cela peut être fait facilement avec substitution.
:%s/\.\s*\w/\=toupper(submatch(0))/g
- \.\s*\w – Modèle de recherche – littéral . ( point ) suivi de Zéro ou plus d'espace et d'un caractère de mot.
- toupper – convertit le texte donné en majuscule.
- submatch(0) – renvoie le modèle correspondant.
Texte avant substitution :
Lot of vi/vim tips and tricks are available at thegeekstuff.com. reading these articles will make you very productive. following activities can be done very easily using vim editor. a. source code walk through, b. record and play command executions, c. making the vim editor as ide for several languages, d. and several other @ vi/vim tips & tricks.
Texte après substitution (les modifications sont en gras)
Lot of vi/vim tips and tricks are available at thegeekstuff.com. Reading these articles will make you very productive. Following activities can be done very easily using vim editor. a. Source code walk through, b. Record and play command executions, c. Making the vim editor as ide for several languages, d. And several other @ vi/vim tips & tricks.
Lecture recommandée
Vim 101 Hacks, par Ramesh Natarajan . Je suis un accro de la ligne de commande. Donc, naturellement, je suis un grand fan des éditeurs Vi et Vim. Il y a plusieurs années, lorsque j'écrivais beaucoup de code C sur Linux, je lisais tous les trucs et astuces disponibles pour l'éditeur Vim. Sur la base de mon expérience dans l'éditeur Vim, j'ai écrit le livre électronique Vim 101 Hacks qui contient 101 exemples pratiques sur diverses fonctionnalités avancées de Vim qui vous rendront rapide et productif dans l'éditeur Vim. Même si vous utilisez les éditeurs Vi et Vim depuis plusieurs années et que vous n'avez pas lu ce livre, rendez-vous service et lisez ce livre. Vous serez étonné des capacités de l'éditeur Vim.
Articles géniaux de l'éditeur Vim
Voici quelques excellents tutoriels pour l'éditeur Vi / Vim qui pourraient vous être utiles.
- Didacticiel sur les macros Vi et Vim :comment enregistrer et lire
- Turbochargez le navigateur Firefox avec la fonctionnalité de l'éditeur Vim à l'aide du module complémentaire Vimperator
- Tutoriel :Faites de Vim votre IDE C/C++ à l'aide du plug-in c.vim
- Convertir l'éditeur Vim en magnifique navigateur de code source pour n'importe quel langage de programmation
Remarque : Veuillez vous abonner à The Geek Stuff et ne manquez aucun des futurs trucs et astuces des éditeurs Vi et Vim .