Я хочу переписати частини проекту з відкритим кодом. Сюди входять методи перейменування. Як я можу це зробити ефективно в emacs у всьому проекті?
Я не хотів би використовувати хаки, такі як пошук і заміна у кожному буфері.
ropemacs
.
Я хочу переписати частини проекту з відкритим кодом. Сюди входять методи перейменування. Як я можу це зробити ефективно в emacs у всьому проекті?
Я не хотів би використовувати хаки, такі як пошук і заміна у кожному буфері.
ropemacs
.
Відповіді:
Тепер я використовую helm-ag
для пошуку всіх примірників назви функції (пошук у всіх файлах, включаючи підкаталоги, а не лише у відкритих буферах), а потім використовую C-c C-e
для введення буфера, в якому перераховані всі збіги, і там я змінюю ім’я функції. Коли я закінчую, натискаю, C-c C-c (helm-ag--edit-commit)
щоб зберегти зміни до всіх відкритих файлів.
Це може здатися заплутаним, але дивіться https://github.com/ShingoFukuyama/helm-swoop
Коли ви це робите, ви будете плакати від сліз від радості, що існує така чудова функціональність.
Оскільки ви не вказали мову, важко дати кращі відповіді, ніж "Пошук та заміна".
Якщо ви просто хочете (інтерактивно) замінити всі екземпляри символу на інший, wgrep - це найкраща ставка. Це дозволить вам інтерактивно редагувати буфер результатів grep.
M-x package-install RET wgrep
.M-x rgrep
. Він задасть вам кілька простих запитань, а потім здійснить рекурсивний пошук пошукового терміну в каталозі, який ви вказали.M-x wgrep-change-to-wgrep-mode
. Цей буфер зараз можна редагувати. Будь-які внесені тут зміни будуть відображені у самих файлах.replace-regexp
або a query-replace-regexp
в цьому буфері, щоб зробити рефакторинг.M-x wgrep-save-all-buffers
та M-x wgrep-finish-edit
.Деякі загальні підходи дивіться у розділі " Замінити через файли " на сторінці пошуку та заміни Wiki Emacs Wiki: http://www.emacswiki.org/emacs/CategorySearchAndReplace
Також дивіться відповіді на: Використання Emacs для рекурсивного пошуку та заміни текстових файлів, які вже не відкриті .