Я решил использовать ack и Perl для решения этой проблемы вне Vim, чтобы я мог использовать более мощные регулярные выражения Perl вместо подмножества GNU.Вы можете сопоставить это с ключевым ударом в вашем vimrc.
ack -l 'pattern' | xargs perl -pi -E 's/pattern/replacement/g'
Объяснение
ack
ack - это потрясающий инструмент командной строки, которыйсмесь grep
, find
и полных регулярных выражений Perl (не только подмножество GNU).Она написана на чистом Perl, она быстрая, с подсветкой совпадений, работает в Windows и более удобна для программистов, чем традиционные инструменты командной строки.Установите его в Ubuntu с помощью sudo apt-get install ack-grep
.
xargs
Xargs - это старый инструмент командной строки Unix.Он читает элементы из стандартного ввода и выполняет указанную команду, а затем элементы, считанные для стандартного ввода.Таким образом, в основном список файлов, генерируемых ack, добавляется в конец команды perl -pi -E 's/pattern/replacemnt/g'
.
perl -pi
Perl - это язык программирования.Опция -p заставляет Perl создавать цикл вокруг вашей программы, который перебирает аргументы имени файла.Опция -i заставляет Perl редактировать файл на месте.Вы можете изменить это для создания резервных копий.Опция -E заставляет Perl выполнять одну строку кода, указанную в качестве программы.В нашем случае программа является просто подстановкой регулярных выражений Perl.Для получения дополнительной информации о параметрах командной строки Perl perldoc perlrun
.Для получения дополнительной информации о Perl см. http://www.perl.org/.