Я согласен с парадигмой «Vim - это не IDE». Но бывают случаи, когда IDE нет. Вот что я использую в таких ситуациях:
: grep,: vimgrep,: Ag,: Ggrep
Рефакторинг, который больше связан с регулярными заменами, я обычно использую : grep в моем дереве проекта, а затем записываю макрос для выполнения рефакторинга -: g и: s - это не проблема. Обычно это позволяет мне быстро изменять большое количество файлов с минимальными усилиями. Честно говоря, я использую этот метод больше, чем любой другой.
В зависимости от вашего рабочего процесса встроенные команды могут быть медленными / неудобными. Если вы используете git, вы захотите использовать отличный плагин Fugitive и его :Ggrep
команду для поиска только файлов, проверенных в git. Еще мне нравится Silver Searcher за его скорость.
: argdo,: cdo и: bufdo
: cdo и : argdo удобны для выполнения команд vim над набором файлов.
командная строка
Когда становится труднее определить список файлов, требующих изменений, :vimgrep
я прибегаю к командам командной строки grep / find для более тщательного анализа списка файлов, которые мне нужно реорганизовать. Сохраните список в текстовый файл и используйте :e
мэшап записей макросов, чтобы внести необходимые изменения.
Я считаю, что чем менее ржавыми я сохраняю свои навыки записи макросов, тем более полезным я нахожу Vim для рефакторинга: комфортно сохранять / восстанавливать из регистров, увеличивать / уменьшать переменные счетчика регистров, очищать / сохранять записи макросов в файл для последующего использования и т. Д.
Обновить
С момента написания этой статьи на vimcasts.org было опубликовано больше видеопередач с описанными мною методами (я призываю вас посмотреть ВСЕ Vimcast! ). Для рефакторинга посмотрите эти:
Вимгольф - также отличный способ практиковаться.
Повсеместное распространение серверов протокола языкового сервера с тех пор, как я написал этот ответ, также принесло некоторую возможность рефакторинга в Vim (и другие редакторы). ИМО, они далеки от того, чтобы уравнять возможности рефакторинга, которые вы могли бы увидеть в специально созданной среде IDE (я использую их и предпочитаю coc и ALE). Смотрите другие ответы на этот вопрос для получения дополнительной информации!