Dies beantwortet Ihre allgemeine Frage, nicht jedoch den von Ihnen erwähnten Anwendungsfall (Verschieben von Code).
Emacs hat jetzt eine so genannte nicht zusammenhängende Region. Dies ist die Art von Auswahl, nach der Sie fragen. Vanilla Emacs bietet keine spezielle Möglichkeit, eine nicht zusammenhängende Region zu erstellen, es sei denn, es handelt sich um ein Rechteck . Aber Library Zones tut es.
Mit Bibliothekszonen können Sie mehrere Zonen in Ihrem Puffer definieren. Eine Zonenliste ist eine nicht zusammenhängende Region . Sie können es sich auch als mehrere Regionen vorstellen, je nachdem, wie Sie es nutzen möchten. Sie können jederzeit mehrere Zonenlisten definieren, die jeweils einer anderen Zonenvariablen zugewiesen sind, und zwischen diesen wechseln.
Wenn Sie auch die Bibliothek Bookmark + verwenden , können Sie Listen von Zonen dauerhaft speichern und in späteren Emacs-Sitzungen wiederherstellen. Mit Lesezeichen + können Sie einem Lesezeichen auch beliebige Tags zuweisen. Dies bedeutet, dass Sie eine Liste von Zonen kennzeichnen können.
Die Zonen in einer bestimmten Zonenliste befinden sich normalerweise im selben Puffer, müssen es aber nicht sein. In diesem Fall ist eine Zonenliste allgemeiner als eine nicht zusammenhängende Region. Allgemeiner ist auch, dass jede Zone neben den Zonengrenzen zusätzliche Informationen und eine Kennung enthalten kann.
Es gibt verschiedene Möglichkeiten, eine Zone zu erstellen. Eine der einfachsten ist die Verwendung C-x n a
: Sie definiert eine Zone aus der aktiven Region und fügt sie dem aktuellen Zonensatz hinzu. ( C-x n n
( narrow-to-region
) tut dies zusätzlich zur Verengung auch.)
Dies sind einige der Dinge, die Sie mit einer Reihe (Liste) von Zonen tun können:
- Sortieren Sie sie.
- Benachbarte oder überlappende Zonen vereinen (zusammenfassen) (einschließlich Sortieren).
- Schneide sie.
- Grenzen Sie den Puffer auf eine Zone in der Liste ein. Zwischen den Verengungen fahren. Siehe Mehrere Verengungen .
- Wählen Sie eine Zone in der Liste als aktive Region aus. Radfahren zwischen Regionen.
- Suche sie (sie werden automatisch zuerst vereint). Dazu benötigen Sie die Bibliothek Isearch + .
- Abfrage-Ersetzen über sie.
- Markieren Sie sie und heben Sie die Markierung auf. (Dazu benötigen Sie Bibliothek Highlight oder Bibliothek
facemenu+.el
.
Siehe auch Narrow Indirect , mit dem Sie indirekte Puffer erstellen können , die Klone eines bestimmten Puffers sind und die auf verschiedene Teile dieses Puffers beschränkt sind.