Ich möchte Teile eines OpenSource-Projekts umschreiben. Dies schließt das Umbenennen von Methoden ein. Wie kann ich das in emacs im gesamten Projekt effizient erledigen?
Ich würde lieber keine Hacks wie Suchen und Ersetzen in jedem Puffer verwenden.
refactoring
Die unfun Katze
quelle
quelle
ropemacs
.Antworten:
Ich benutze jetzt
helm-ag
, um alle Instanzen des Funktionsnamens zu finden (sucht in allen Dateien, einschließlich Unterverzeichnissen, nicht nur in offenen Puffern), und gebe dannC-c C-e
einen Puffer ein, der alle Übereinstimmungen auflistet und dort ändere ich den Funktionsnamen. Wenn ich fertig bin, drücke ichC-c C-c (helm-ag--edit-commit)
, um die Änderungen an allen geöffneten Dateien zu speichern.Das mag verwirrend klingen, aber siehe https://github.com/ShingoFukuyama/helm-swoop
Wenn Sie es sich wünschen, werden Sie vor Freude weinen, dass solch eine wunderbare Funktionalität existiert.
quelle
Da Sie die Sprache nicht angegeben haben, ist es schwierig, bessere Antworten als "Suchen und Ersetzen" zu geben.
Wgrep verwenden
Wenn Sie nur alle Instanzen eines Symbols (interaktiv) durch ein anderes ersetzen möchten, ist wgrep die beste Wahl. Hiermit können Sie den Grep-Ergebnispuffer interaktiv bearbeiten.
M-x package-install RET wgrep
.M-x rgrep
. Es wird Ihnen ein paar einfache Fragen stellen und dann eine rekursive Suche nach dem Suchbegriff in dem Verzeichnis durchführen, das Sie angegeben haben.M-x wgrep-change-to-wgrep-mode
. Dieser Puffer kann jetzt bearbeitet werden. Alle Änderungen, die Sie hier vornehmen, werden in den Dateien selbst wiedergegeben.replace-regexp
oder einquery-replace-regexp
in diesem Puffer aus, um das Refactoring durchzuführen.M-x wgrep-save-all-buffers
undM-x wgrep-finish-edit
.quelle
Informationen zu einigen allgemeinen Vorgehensweisen finden Sie unter der Überschrift " Über Dateien ersetzen " auf der Emacs Wiki-Seite "Suchen & Ersetzen": http://www.emacswiki.org/emacs/CategorySearchAndReplace
Siehe auch die Antworten zu: Verwenden von Emacs zum rekursiven Suchen und Ersetzen in Textdateien, die noch nicht geöffnet sind .
quelle
Sie können
counsel-rg
gefolgt von verwenden C-c C-o, um eine Liste aller Kandidaten in einem Puffer abzurufen. Drücken Siew , um sie mit zu bearbeitenwgrep
. Ich empfehleiedit
für Symbolumbenennungen. Drücken Sie C-c C-c, um zu bestätigen.Abhängigkeiten:
counsel
,wgrep
,iedit
Sind auf Melpaquelle