Ich benutze ViM, TextMate und GNU Emacs seit Jahren.
Zum Beispiel ist hier der Text, den ich bearbeiten möchte
foo
foo
foo
Und hier ist das Textergebnis, das ich haben möchte
bar foo
bar foo
bar foo
Wenn ich bei Vim bin, kann ich in der ersten Zeile und in der ersten Spalte "Strg v" ausführen, dann "2 j" drücken, dann "i" drücken und dann "bar" eingeben, fertig.
Wenn ich auf Textmate bin, kann ich "Apple Command Option" drücken, während ich (mit der Maus) nach unten wähle, und dann "bar" eingeben, fertig.
Aber wenn ich auf GNU Emacs 23.1 bin, weiß ich nicht, wie ich das machen soll. : ((
Ich suchte in EmacsWiki und googelte herum, bekam aber keine Lösung. Bitte leiten Sie mich, wenn Sie meine Lösung kennen. Wäre dafür dankbar.
Antworten:
Zwei Möglichkeiten kommen in den Sinn. Das erste sind Rechtecke (wie in einer anderen Antwort erwähnt). Die expliziten Anweisungen dafür sind:
Eine andere Option, die sehr schöne Rechteck- / Spaltenbearbeitungsbefehle bietet, ist der CUA-Modus . Hier ist ein Blog-Beitrag (Veröffentlichung: mein Blog), in dem die Verwendung beschrieben wird. Um zu sehen, wie leistungsfähig der CUA-Modus ist, lohnt es sich, dieses dreiminütige Video anzusehen .
Ich integriere den CUA-Modus mit den folgenden Elementen (da ich es vorziehe, keinen vorübergehenden Markierungsmodus zu verwenden):
quelle
In Emacs-24.4 wurde die Basisunterstützung für Rechtecke etwas verbessert. Anstatt also
C-SPC
gefolgt von zu verwendenC-x r t
, können Sie Folgendes tun:Das Schöne an der
C-SPC
Methode ist, dass Sie ein visuelles Feedback zum ausgewählten Rechteck erhalten. Natürlichcua-mode
funktioniert die Methode auch (und funktioniert ähnlich).quelle
cua-mode
Hätte es besser ... Nur um eine Sache zu erwähnen:cua-mode
Während ein Rechteck hervorgehoben ist, kann ich Text eingeben und hinzufügen. In der aktuellen eingebauten Emacs-Basisunterstützung wird die Markierung ausgeblendet (die Auswahl wird aufgehoben) und die Eingabe wird an der Cursorposition eingefügt. Dies ist kontraintuitiv und nicht das, was ich normalerweise möchte (undcua-mode
(global-set-key [?\C-x ?\s] 'cua-rectangle-mark-mode)
.C-t
Operation (akaC-x r t
) auch eine Vorschau des neu eingefügten Texts, während Sie ihn eingeben .In Emacs werden solche Spalten als "Rechtecke" bezeichnet. Also dies ist die entsprechende Dokumentation Seite.
Alle diese Befehle setzen voraus, dass die Region das Rechteck enthält, mit dem Sie arbeiten. Sie müssen also die Markierung für das obere linke Zeichen im Rechteck setzen und den Bereich bis zum unteren rechten Zeichen im Rechteck erweitern. Der Befehl, nach
M-x string-insert-rectangle
dem Sie suchen, fordert Sie dann auf, die Zeichenfolge einzufügen.quelle
Kürzeste Antwort: Aktivieren Sie den CUA-Rechteckmodus über C-RET.
Also, für Ihren Fall wäre es
bar
SPCEine ausführlichere Lösung und Links zu CUA finden Sie in der Antwort von @Trey.
quelle
Sie können hierfür replace-regexp verwenden:
Dies fügt dem Zeilenanfang einen Balken hinzu.
quelle