Chcę przepisać części projektu typu open source. Obejmuje to zmiany nazw metod. Jak mogę to zrobić skutecznie w emacach w całym projekcie?
Wolałbym nie używać hacków takich jak wyszukiwanie i zamiana w każdym buforze.
ropemacs
.
Chcę przepisać części projektu typu open source. Obejmuje to zmiany nazw metod. Jak mogę to zrobić skutecznie w emacach w całym projekcie?
Wolałbym nie używać hacków takich jak wyszukiwanie i zamiana w każdym buforze.
ropemacs
.
Odpowiedzi:
Teraz używam helm-ag
do znajdowania wszystkich instancji nazwy funkcji (wyszukiwanie we wszystkich plikach, w tym w podkatalogach, nie tylko w otwartych buforach), a następnie używam C-c C-e
do wprowadzenia bufora, który wyświetla wszystkie dopasowania, i tam zmieniam nazwę funkcji. Po C-c C-c (helm-ag--edit-commit)
zakończeniu naciskam, aby zapisać zmiany we wszystkich otwartych plikach.
Może to zabrzmieć myląco, ale proszę zobaczyć https://github.com/ShingoFukuyama/helm-swoop
Kiedy będziesz go smucić, będziesz płakać łzami radości, że istnieje taka cudowna funkcjonalność.
Ponieważ nie określono języka, trudno jest podać lepsze odpowiedzi niż „Wyszukaj i zamień”.
Jeśli chcesz (interaktywnie) zastąpić wszystkie wystąpienia symbolu innym, najlepszym rozwiązaniem jest wgrep. Pozwala interaktywnie edytować bufor wyników grep.
M-x package-install RET wgrep
.M-x rgrep
. Zadaje ci kilka prostych pytań, a następnie przeprowadza rekurencyjne wyszukiwanie wyszukiwanego terminu w określonym katalogu.M-x wgrep-change-to-wgrep-mode
. Ten bufor można teraz edytować. Wszelkie wprowadzone tutaj zmiany zostaną odzwierciedlone w samych plikach.replace-regexp
lub a query-replace-regexp
w tym buforze, aby dokonać refaktoryzacji.M-x wgrep-save-all-buffers
iM-x wgrep-finish-edit
.W przypadku niektórych ogólnych podejść sprawdź „ nagłówek Zamień pliki ” na stronie wyszukiwania Emacs Wiki i zamień: http://www.emacswiki.org/emacs/CategorySearchAndReplace
Zobacz także odpowiedzi na: Używanie Emacsa do rekurencyjnego znajdowania i zastępowania w plikach tekstowych, które nie są jeszcze otwarte .