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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top