Depuis Vim, je souhaite analyser un texte ligne par ligne et transmettre son contenu à une commande shell externe. Par exemple, j'ai une liste de noms et je veux dire bonjour à chaque nom de la liste. Ce que j'ai déjà réussi à faire est le suivant.Transférer un argument à un vim "execute"
Compte tenu de ce texte:
John Doe
Jane Doe
Baby Doe
Je peux utiliser cette commande pour trouver seul le premier nom et réutiliser le jeton dans une commande de remplacement en utilisant la syntaxe backreference (\ 0 ou \ 1).
:%g/\w\+/ s//--\0--/
C'est la sortie:
--John-- Doe
--Jane-- Doe
--Baby-- Doe
Ce que je voudrais faire maintenant est de modifier ma commande « de remplacement » pour la commande shell « exécuter ».
Cette commande
:% g/\ w \ +/exe "monde"
fonctionne très bien, mais comment paramétrer "echo bonjour!"?
Jusqu'à présent, j'ai essayé ceci:
:% g/\ w \ +/exe "echo bonjour!" \ 0
et cela aussi:
:% g/\ w \ +/exe "! echo bonjour" &
sans succès ...
Cette question a beaucoup de valeur puisque vous pouvez ensuite, à partir de Vim, scanner un texte contenant une liste de répertoires et les créer à la volée.
http: // vim .wikia.com/wiki/Power_of_g a quelques exemples. – bishop
Spécialement celui-ci: http://vim.wikia.com/wiki/Redirect_g_search_output – dNitro