Я хочу переписать части проекта с открытым исходным кодом. Это включает в себя методы переименования. Как я могу сделать это эффективно в Emacs по всему проекту?
Я бы предпочел не использовать такие хаки, как поиск и замена, в каждом буфере.
refactoring
Несчастный кот
источник
источник
ropemacs
.Ответы:
Теперь я использую,
helm-ag
чтобы найти все экземпляры имени функции (поиск во всех файлах, включая подкаталоги, а не только в открытых буферах), а затем я использую,C-c C-e
чтобы ввести буфер, в котором перечислены все совпадения, и там я изменяю имя функции. Когда я закончу, я нажимаю,C-c C-c (helm-ag--edit-commit)
чтобы сохранить изменения во всех открытых файлах.Это может показаться странным, но см. Https://github.com/ShingoFukuyama/helm-swoop.
Когда вы берете его, вы будете плакать от слез радости, что такая замечательная функциональность существует.
источник
Поскольку вы не указали язык, сложно дать лучшие ответы, чем «Поиск и замена».
Использование wgrep
Если вы просто хотите (в интерактивном режиме) заменить все экземпляры символа на другой, то лучшим выбором будет wgrep. Это позволит вам интерактивно редактировать буфер результатов grep.
M-x package-install RET wgrep
.M-x rgrep
. Он задаст вам несколько простых вопросов, а затем выполнит рекурсивный поиск по поисковому запросу в указанном вами каталоге.M-x wgrep-change-to-wgrep-mode
. Этот буфер теперь редактируемый. Любые внесенные вами изменения будут отражены в самих файлах.replace-regexp
или aquery-replace-regexp
в этом буфере, чтобы выполнить рефакторинг.M-x wgrep-save-all-buffers
иM-x wgrep-finish-edit
.источник
Некоторые общие подходы можно найти под заголовком « Заменить через файлы » на странице поиска и замены Emacs Wiki: http://www.emacswiki.org/emacs/CategorySearchAndReplace
Также смотрите ответы на следующие вопросы: Использование Emacs для рекурсивного поиска и замены в текстовых файлах, которые еще не открыты .
источник
Вы можете использовать с
counsel-rg
последующим, C-c C-oчтобы получить список всех кандидатов в буфере. Нажмите, wчтобы редактировать их с помощьюwgrep
. Я рекомендуюiedit
для переименования символов. Нажмите, C-c C-cчтобы совершить.зависимости:
counsel
,wgrep
,iedit
Находятся на MELPAисточник