Informationsquelle: 1
Für Benutzer von emacs pro:
- Rufen Sie dired auf, um Dateien in dir aufzulisten, oder rufen Sie find-dired auf, wenn Sie alle Unterverzeichnisse benötigen.
- Markieren Sie die gewünschten Dateien. Sie können durch Regex markieren, indem Sie 【% m typ eingeben.
- Geben Sie Q ein, um dired-do-query-replace-regexp aufzurufen.
- Geben Sie Ihren Suchbegriff ein und ersetzen Sie die Zeichenfolge. 〔☛ allgemeines Elisp-Regex-Muster〕
- Geben Sie für jedes Vorkommen y zum Ersetzen und n zum Überspringen ein. Geben Sie 【Strg + g】 ein, um den gesamten Vorgang abzubrechen.
- Art ! Um alle Vorkommen in der aktuellen Datei zu ersetzen, ohne zu fragen, überspringt N alle möglichen Ersetzungen für den Rest der aktuellen Datei. (N ist nur Emacs 23)
- Geben Sie Y ein, um alle Dateien ohne weitere Aufforderung zu ersetzen. (Nur Emacs 23)
- Rufen Sie ibuffer auf, um alle geöffneten Dateien aufzulisten. Geben Sie 【* u】 ein, um alle nicht gespeicherten Dateien zu markieren, geben Sie S ein, um alle markierten Dateien zu speichern, und geben Sie D ein, um alle zu schließen.
Schritt-für-Schritt-Anleitung für Emacs-Anfänger
Wählen Sie Zieldateien
Starten Sie emacs, indem Sie in der Eingabeaufforderung der Befehlszeilenschnittstelle "emacs" eingeben. (Oder doppelklicken Sie auf das Emacs-Symbol, wenn Sie sich in einer Grafikbenutzeroberfläche befinden.)
Dateien in einem Verzeichnis auswählen
Zuerst müssen Sie die Dateien auswählen, die Sie ersetzen möchten. Verwenden Sie das grafische Menü 〖Datei ▸ Verzeichnis öffnen〗. Emacs fragt Sie nach einem Verzeichnispfad. Geben Sie den Verzeichnispfad ein und drücken Sie die Eingabetaste.
Jetzt wird Ihnen die Liste der Dateien angezeigt, und jetzt müssen Sie die Dateien markieren, an denen das Regex-Suchen / Ersetzen arbeiten soll. Sie markieren eine Datei, indem Sie den Cursor auf die gewünschte Datei bewegen und dann m drücken. Heben Sie die Markierung auf, indem Sie u drücken. (Um Unterverzeichnisse aufzulisten, bewegen Sie den Cursor in das Verzeichnis und drücken Sie i. Der Inhalt des Unterverzeichnisses wird unten aufgelistet.) Um alle Dateien mit einem regulären Ausdruck zu markieren, geben Sie 【% m】 ein und geben Sie dann Ihr reguläres Verzeichnis ein. Wenn Sie beispielsweise alle HTML-Dateien markieren möchten, geben Sie 【% m】 und dann .html $ ein. (Eine Liste der Markierungsbefehle finden Sie im grafischen Menü „Markieren“ (dieses Menü wird angezeigt, wenn Sie sich im Dired-Modus befinden).)
Auswählen von Dateien in einem Verzeichnis und allen seinen Unterverzeichnissen
Wenn Sie Dateien in einem Verzeichnis suchen / ersetzen möchten, einschließlich Hunderten von Unterverzeichnissen, finden Sie hier eine Methode zum Auswählen aller dieser Dateien.
Rufen Sie find-dired an. (Sie rufen einen Befehl auf, indem Sie 【Alt + x】 drücken.) Geben Sie dann den Verzeichnisnamen ⁖ / Users / mary / myfiles ein
Hinweis: Wenn Sie Emacs auf einem nicht grafischen Unix-Textterminal verwenden und 【Alt + x】 nicht funktioniert, lautet der entsprechende Tastendruck 【Esc x】.
Emacs fragt Sie mit der Aufforderung "Find ausführen (mit Argumenten):". Wenn Sie alle HTML-Dateien ersetzen müssen, geben Sie -name "* html" ein. Wenn Sie sich nicht für die Art der Datei interessieren, sondern nur für alle Dateien unter diesem Verzeichnis, geben Sie "-type f" ein.
Markieren Sie nun die Dateien wie oben beschrieben.
Interaktives Suchen / Ersetzen
Jetzt können Sie die interaktive Suche ersetzen. Nehmen wir zur Vereinfachung an, Sie möchten nur das Wort "schnell" durch "super" ersetzen. Rufen Sie jetzt dired-do-query-replace-regexp auf. Sie werden aufgefordert, die Regex-Zeichenfolge und die Ersatzzeichenfolge einzugeben. Geben Sie "quick" ein, geben Sie "super" ein.
Jetzt verwendet Emacs Ihr Muster und überprüft die Dateien und stoppt und zeigt Ihnen, wann immer eine Übereinstimmung aufgetreten ist. In diesem Fall werden Sie von emacs aufgefordert, die Änderung vorzunehmen oder die Änderung zu überspringen. Geben Sie y ein, um die Änderung vorzunehmen. Geben Sie zum Überspringen n ein. Wenn Sie einfach möchten, dass Emacs alle derartigen Änderungen an der aktuellen Datei vornehmen, geben Sie! Ein.
Wenn Sie den gesamten Vorgang abbrechen möchten, ohne die von Ihnen vorgenommenen Änderungen zu speichern, geben Sie tr Strg + g】 ein und beenden Sie Emacs über das Menü ▸ Datei ac Emacs beenden〗.
Speichern der geänderten Dateien
Nachdem Sie die obige Prüfung durchlaufen haben, müssen Sie noch einen weiteren Schritt ausführen, nämlich das Speichern der geänderten Dateien.
Wenn Sie Emacs Version 22 oder höher verwenden, rufen Sie ibuffer auf, um in einen Pufferlistenmodus zu wechseln. Geben Sie dann 【* u】 ein, um alle nicht gespeicherten Dateien zu markieren, und geben Sie S ein, um alle zu speichern. (das ist Schicht-s)
Wenn Sie eine Emacs-Version 21 verwenden, können Sie dies tun: Listenpuffer aufrufen, dann den Cursor auf die Datei bewegen, die Sie speichern möchten, und s eingeben. Die Datei wird für eine spätere Speicheraktion markiert. Geben Sie u ein, um die Markierung aufzuheben. Wenn Sie fertig sind, geben Sie x ein, um das Speichern aller zum Speichern markierten Dateien auszuführen. (In Emacs wird die geöffnete Datei als "Puffer" bezeichnet. Ignorieren Sie dort andere Dinge.)
Alternativ zu den oben genannten Optionen können Sie auch Save-Some-Puffer (Strg + xs) aufrufen. Dann zeigt emacs jede nicht gespeicherte Datei an und fragt, ob Sie sie speichern möchten.
Hinweis: Der reguläre Ausdruck von emacs ist nicht der gleiche wie der von Perl oder Python, aber ähnlich. Eine Zusammenfassung und allgemeine Muster finden Sie unter: Emacs Regex.