Frage
Ich habe an mehreren Stellen gelesen, dass die Rechteck-Funktionen in Emacs sehr nützlich sind. Ich habe ein bisschen über sie zu lesen, und ich kann nicht ganz Abbildung warum. Ich meine, wenn Sie einen Absatz töten wollen, können Sie markieren die erste Zeile / Spalte und dann die letzten, und das ist eigentlich ein Rechteck, nicht wahr? Aber Sie können immer noch die normalen kill ...
Also, welche Art von Transformationen werden Sie tun mit ihnen?
Lösung
Wenn Sie die Daten in den Spalten in einer Textdatei mit M-x delete-rectangle
oder M-x kill-rectangle
können Sie eine einzelne Spalte von Daten löschen. In ähnlicher Weise M-x yank-rectangle
in einer Textspalte einfügen wird.
Nehmen wir zum Beispiel den folgenden Text:
1. alligator alphorn
2. baboon bugle
3. crocodile cornet
4. dog didgeridoo
5. elephant euphonium
6. fish flugelhorn
7. gopher guitar
Wählen Sie aus dem ein Alligator auf die g-Gitarre. Der Anfang und das Ende der Auswahl markieren zwei gegenüberliegende Ecken des Rechtecks. Geben Sie M-x kill-rectangle
und Sie sofort haben:
1. alphorn
2. bugle
3. cornet
4. didgeridoo
5. euphonium
6. flugelhorn
7. guitar
Als nächstes setzte die Markierung am Ende der oberen Linie, ein paar Räume hinzufügen, wenn erforderlich, und geben Sie M-x yank-rectangle
und ta-da! Sie haben die Spalten neu geordnet:
1. alphorn alligator
2. bugle baboon
3. cornet crocodile
4. didgeridoo dog
5. euphonium elephant
6. flugelhorn fish
7. guitar gopher
Andere Tipps
Ich mag Rechteck für 2 Zwecke verwenden, den gleichen Text in jeder Zeile eingefügt oder eine Textspalte (ähnlich wie Dave Webb Antwort) zu töten.
Es gibt zwei nützliche Shortcuts für diese, C-x r k
wird ein Rechteck töten, und C-x r t
einzufügen (es gibt auch andere Rechteck Befehle mit einem C-x r
Präfix, aber diese sind diejenigen, die ich verwenden).
Also lassen Sie uns sagen, Sie wollen einige Code nehmen und es zu formatieren, so dass Sie es in einem Stack-Überlauf Beitrag veröffentlichen können ... Sie müssen mit 4 Leerzeichen voranstellen. Also, gehen Sie an den Anfang der ersten Zeile, C-SPC
zu markieren, geht dann zum Anfang der letzten Zeile und C-x r t <SPC> <SPC> <SPC> <SPC> <RET>
, und dort haben Sie es! Dann können Sie einfach kopieren und in Stack-Überlauf einfügen. Ich habe in komplexeren Situationen führen, wo dies sinnvoll ist, wo man tatsächlich Text, den Sie in jeder Zeile an einer bestimmten Stelle einfügen möchten hat.
So ist die andere Situation wie Dave Webb Situation, wenn Sie wollen, um ein Rechteck zu töten, verwenden C-x r k
aber, weil es ist nur viel schneller; -)
Auch nach meiner Referenzkarte dass ich ausgedruckt, wenn ich zum ersten Mal gestartet haben, können Sie wie folgt vor:
-
C-x r r
: Kopieren in ein Register -
C-x r y
: Yank ein Rechteck -
C-x r o
: Öffnen Sie ein Rechteck, Text rechts zu verschieben (was immer das bedeutet ...) -
C-x r c
: blank aus einem Rechteck (Ich gehe davon aus, dass Mittel es mit Leerzeichen ersetzen, aber Sie würden sie versuchen müssen, um zu sehen) -
C-x r t
: Präfix mit Text (wie oben beschrieben) -
C-x r k
: Tötung (wie oben beschrieben)
In emacs24 + gibt die Funktion auch für die Nummerierung der Zeilen:
(rectangle-number-lines START END START-AT &optional FORMAT)
Insert numbers in front of the region-rectangle.
START-AT, if non-nil, should be a number from which to begin
counting. FORMAT, if non-nil, should be a format string to pass
to `format' along with the line count. When called interactively
with a prefix argument, prompt for START-AT and FORMAT.
Es ist binded bis C-R x N standardmäßig.