J'ai décidé d'utiliser accusé de réception et Perl pour résoudre ce problème en dehors de Vim afin que je puisse utiliser le plus puissant des expressions régulières de Perl au lieu de la GNU sous-ensemble. Vous pouvez mapper ce pour une touche dans votre vimrc.
ack -l 'pattern' | xargs perl -pi -E 's/pattern/replacement/g'
Explication
ack
ack est un super outil de ligne de commande qui est un mélange de grep
, find
, et plein d'expressions régulières de Perl (et pas seulement de la GNU sous-ensemble). Ses écrits en pur Perl, il est rapide, il a de correspondance mettant en évidence, fonctionne sur Windows et c'est plus convivial pour les programmeurs que les traditionnels outils de ligne de commande. L'installer sur Ubuntu avec sudo apt-get install ack-grep
.
xargs
Xargs est un vieux unix outil de ligne de commande. Il lit les éléments à partir de l'entrée standard et exécute la commande spécifiée suivie par les éléments de lecture de l'entrée standard. Donc, fondamentalement, la liste des fichiers générés par ack sont ajoutés à la fin de l' perl -pi -E 's/pattern/replacemnt/g'
commande.
perl -pi
Perl est un langage de programmation. L'option-p causes Perl pour créer une boucle autour de votre programme qui parcourt plus de nom de fichier arguments. L'option-i causes de Perl à éditer le fichier en place. Vous pouvez modifier cette option pour créer des sauvegardes. L'option-E causes Perl pour exécuter une ligne de code spécifié que le programme. Dans notre cas, le programme est tout simplement une expression rationnelle Perl substitution. Pour plus d'informations sur Perl options de ligne de commande perldoc perlrun
. Pour plus d'informations sur Perl voir http://www.perl.org/.