Я погоджуюсь з парадигмою "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 було опубліковано більше відеозаписів для описаних мною методів (я закликаю вас переглянути ВСІ Vimcasts! ). Для рефакторингу слідкуйте за цими:
Вимгольф - також чудовий спосіб тренуватися.
Повсюдність серверів протоколів Language Server, оскільки я написав цю відповідь, також принесла деяку можливість рефакторингу Vim (та іншим редакторам). ІМО вони далекі від рівних можливостей рефакторингу, які ви бачили б у спеціально створеній IDE (я їх використовую, і віддаю перевагу кокам та ALE). Подивіться інші відповіді на це питання, щоб отримати додаткову інформацію!