Ich glaube, Textmate hat einen Modus, in dem, wenn Sie mit der Eingabe beginnen, in allen von Ihnen ausgewählten Zeilen dasselbe eingegeben wird. Gibt es etwas Ähnliches in Emacs? Ich vermute, es gibt eine Möglichkeit, wie Rechtecke mir helfen können, aber ich bin mir nicht sicher, wie ...
71
Antworten:
So einfach ist das: Cx rt
Einige Beispiele finden Sie hier: http://ergoemacs.org/emacs/emacs_string-rectangle_ascii-art.html
quelle
C-x
zum Schneiden zugeordnet (Cua-Modus), daher ist dies keine gute Idee.C-x
zu schneiden, was nicht gut ist :)Sie müssen unbedingt versuchen, mehrere Cursor zu installieren:
https://github.com/magnars/multiple-cursors.el
Es ist in Marmelade und Melpa, also nur:
quelle
(global-unset-key (kbd "M-<down-mouse-1>"))
(global-set-key (kbd "M-<mouse-1>") 'mc/add-cursor-on-click)
Ihrer Konfiguration hinzu , um eine Mehrfachauswahl durch Klicken hinzuzufügen (der Standard für den Verlust von Personen, einschließlich mir) .Eine der Lösungen ist der CUA-Modus. Aktivieren Sie den Cua-Modus mit
M-x cua-mode
, wählen Sie das Rechteck aus: Beginnen Sie zuerstC-Enter
und bewegen Sie den Cursor mit den Standardbewegungsbefehlen, um die Auswahl zu treffen. Wenn Sie jetzt jederzeit die Eingabetaste drücken, wird der Cursor durch die Ecken des Rechtecks bewegt, sodass Sie der Auswahl Text voranstellen oder anhängen können.quelle
cua-selection-mode
anstelle von verwendencua-mode
, erhalten Sie keine unerwünschten Bindungen zum Ausschneiden / Kopieren / Einfügen. Sie werden eine andere Funktionalität erhalten , dass Sie nicht wollen könnten, obwohl (vor allem, Editierbefehle die Region zu ersetzen).Sie können die folgenden Befehle (und Tasten) verwenden, um dies zu erreichen:
Hier finden Sie eine vollständige Beschreibung dieser Funktionen: http://www.gnu.org/software/emacs/manual/html_node/emacs/Rectangles.html
quelle
Für diejenigen unter Ihnen, die dies für kompliziertere Szenarien tun möchten und dies ohne Installation eines neuen Moduls tun möchten, lesen Sie bitte weiter. (Dies ist in Emacs möglich, ohne MarkMultiple zu installieren, obwohl ich MarkMultiple persönlich benutze und liebe.)
Ich musste kürzlich eine SQL-Abfrage in eine Datei ausgeben und sie dann in eine MYSQL INSERT-Abfrage formatieren. So hat Emacs mir das Leben leichter gemacht ...
Datei sieht aus wie:
1 I am a random text 2 I am not 3 G, you've gone mad 4 Click on this link 5 Transfer in progress (we've started the transfer process) 6 But transfer happend yesterday 7 No you are 8 Oh please! this is getting too much! 9 I love emacs 10 I cant be bothered with this any more 11 its time to raise the bar 12 show me how to expand my territory
Und ich möchte, dass es so aussieht:
(1, ,'I am a random text'), (2, ,'I am not'), (3, ,'G, youve gone mad'), (4, ,'Click on this link'), (5, ,'Transfer in progress (weve started the transfer process)'), (6, ,'But transfer happend yesterday'), (7, ,'No you are'), (8, ,'Oh please! this is getting too much!'), (9, ,'I love emacs'), (10, ,'I cant be bothered with this any more'), (11, ,'its time to raise the bar'), (12, ,'show me how to expand my territory'),
C-x (
, um die Aufnahme des Makros zu starten. [Zu diesem Zeitpunkt werden alle Tasteneingaben aufgezeichnet. Befolgen Sie daher die Anweisungen sorgfältig.]C-a
, um zum Zeilenanfang zu gelangenM-f
ein Wort vorwärts ein und geben Sie dann "," einC-n
um zur nächsten Zeile zu gelangen, gefolgt vomC-x )
Beenden des MakrosC-u 11 C-x e
Wiederholen Sie das Makro n (in diesem Fall 11) MalEureka! Wenn Sie nicht versagt haben, erhalten Sie jetzt etwas, das so aussieht:
(1, I am a random text (2, I am not (3, G, youve gone mad (4, Click on this link (5, Transfer in progress (weve started the transfer process) (6, But transfer happend yesterday (7, No you are (8, Oh please! this is getting too much! (9, I love emacs (10, I cant be bothered with this any more (11, its time to raise the bar (12, show me how to expand my territory
An diesem Punkt überlasse ich es Ihnen, den Rest herauszufinden. Aber bevor ich gehe, möchte ich erwähnen, dass es einige Möglichkeiten gibt, so etwas zu erreichen. Dies ist nur einer dieser Wege und es ist zufällig mein Lieblingsweg.
Hoffe du fandest es hilfreich;)
quelle
Ich glaube, Sie suchen nach dem von boskom vorgeschlagenen cua-Modus. http://www.vimeo.com/1168225?pg=embed&sec=1168225 Dieser Screencast gibt Ihnen möglicherweise eine Vorstellung davon, wie Sie dies verwenden können.
quelle
Rechtecke sind für einfache Dinge wie das Löschen der gleichen Anzahl von Leerzeichen in benachbarten Zeilen.
Ansonsten sind Tastaturmakros der richtige Weg.
quelle
Die oben gezeigten Antworten dienen zum Einfügen von Text in Spalten. TextMates "Jede Zeile in Auswahl bearbeiten" fügt unabhängig von der Länge jeder Zeile denselben Text in jede Zeile ein. Ich lerne jetzt Lisp, also habe ich als Übung eine Funktion geschrieben, um dies zu tun:
(defun append-to-lines (text-to-be-inserted) ;;Appends text to each line in region (interactive "sEnter text to append: ") (save-excursion (let (point-ln mark-ln initial-ln final-ln count) (barf-if-buffer-read-only) (setq point-ln (line-number-at-pos)) (exchange-point-and-mark) (setq mark-ln (line-number-at-pos)) (if (< point-ln mark-ln) (progn (setq initial-ln point-ln final-ln mark-ln) (exchange-point-and-mark)) (setq initial-ln mark-ln final-ln point-ln)) (setq count initial-ln) (while (<= count final-ln) (progn (move-end-of-line 1) (insert text-to-be-inserted) (next-line) (setq count (1+ count)))) (message "From line %d to line %d." initial-ln final-ln ))))
Sie treffen zunächst eine Auswahl, die alle Zeilen enthält, die Sie beeinflussen möchten, und führen dann die Funktion mit Mx-Anhängen an Zeilen aus.
quelle