Ich habe kürzlich davon erfahren multiple-cursors
und es sieht aus wie ein sehr nützliches Paket. Ich habe die Dokumentation des Original-Repos durchgesehen , aber die Befehle erscheinen mir immer noch etwas dunkel.
Ich habe mir dann das Video in Emacs Rocks! Angesehen, und das Video ist großartig, aber es konzentriert sich hauptsächlich auf das, was multiple-cursors
dazu in der Lage ist, und nicht darauf, wie es gemacht wird.
Gibt es Anleitungen, Tutorials oder Beispiele, die die grundlegendsten Funktionen veranschaulichen?
multiple-cursors
Amelio Vazquez-Reina
quelle
quelle
multiple-cursors
sehr schnell einarbeiten, indem ich die README-Datei las. Meine Empfehlung ist, einfach zu lernenmc/mark-next-like-this
. Probieren Sie es aus und machen Sie sich mit der Funktionsweise vertraut. Lesen Sie von dort aus die README-Datei, wenn Sie eine Frage haben, die mit "Ich frage mich, ob mehrere Cursor das können ..." beginnt. Video wäre hilfreich für Anfänger.Antworten:
Zusätzlich zu den beschriebenen Verwendungen von @bastibe benutze ich mehrere Cursor, um Text am Anfang / Ende einer Zeilengruppe hinzuzufügen oder zu entfernen:
set-rectangular-region-anchor
(gebunden an einen beliebigen Schlüssel, ich denke der Vorschlag von Magnars war H-space, wenn Sie einen Hyper-Schlüssel haben)C-n
undC-p
) vorwärts oder rückwärts, bis Sie auf jeder Zeile, die Sie bearbeiten möchten, einen Cursor habenC-e
), um dort Änderungen vorzunehmen.Sie können verwendet werden
forward-word
,forward sentence
usw. hin und her entlang der Linien bewegen, die Ihnen das vierte Wort in jeder Zeile bearbeiten kann, auch wenn der Text in jeder Zeile nicht identisch ist.Zum Beispiel mache ich diese Art von Arbeit die ganze Zeit:
C-u M-!ls / test-dat / pp5 / * fsaRETURN
Dies fügt die Inhalte des pp5-Verzeichnisses in den Puffer ein. Ich platziere Punkt
!
zu Beginn der Auflistung:→
→
→
→
Und voila, Sie haben eine Dateiliste in den Code konvertiert, um diese Liste zu lesen. Es ist tatsächlich viel schwieriger zu beschreiben, als es tatsächlich zu tun!
quelle
multiple-cursors
können eine wirklich leistungsfähige Kombination bilden.phi-search
robuster sein als das Navigieren mit Befehlen wieM-f (x3)
phi-search
, das sieht gut aus!Grundsätzlich habe ich zwei häufige Anwendungsfälle für
multiple-cursors
:mc/mark-next-like-this
undmc/mark-previous-like-this
, um weitere Instanzen davon zu markieren. Ich C-wdrücke dann sofort , um jede Instanz zu löschen, und schreibe stattdessen eine neue Zeichenfolge. Ich benutze dies oft, um eine Variable im Code umzubenennen.mc/edit-lines
, um einen Cursor pro Zeile zu erhalten. Sie können jetzt reguläre Bearbeitungsbefehle verwenden, die auf jeden dieser Cursor angewendet werden.Der erste Anwendungsfall ist besonders nützlich bei
expand-region
. Ich habeer/expand-region
an C-jundmc/mark-next-like-this
undmc/mark-previous-like-this
an C->und gebunden C-<. Damit kann ich leicht auswählen, an welcher Stelle das Wort steht, und das nächste / vorherige Vorkommen dieses Wortes sofort markieren.Der zweite Anwendungsfall ersetzte für mich die meisten Anwendungen von Makros. Anstatt ein Makro aufzuzeichnen und dieses dann an mehreren Stellen anzuwenden, platziere ich einen Cursor an jeder Stelle und führe die Operation nur an allen Stellen gleichzeitig aus.
quelle
multiple-cursors
zB fürmark-next-like-this
& empfehlenmark-previous-like-this
?C->
undC-<
fürmark-next-like-this
undmark-previous-like-this
.Ich möchte einige Extras hinzufügen, mit denen ich manchmal arbeite
multiple-cursors
.Ich habe Folgendes für nützlich befunden:
Iy-Go-To-Char
Manchmal müssen Sie zum nächsten
#
oder zum nächsten,
oder einem bestimmten Trennzeichen wechseln . Dies ist besonders praktisch, wenn Sie für jeden Cursor eine andere Anzahl von Wörtern verwenden müssen. Es bietet die Funktioneniy-go-to-char
undiy-go-to-char-backward
, die Sie binden und schön nutzen können.expand-region
Dies ist aus ähnlichen Gründen sehr nützlich wie
iy
- wenn Sie unter jedem Cursor leicht abweichende Linien haben und möglicherweise die Zeichenfolge in Anführungszeichen unter dem Punkt oder ähnlichem auswählen möchten.benutzerdefinierte Sachen
Dies sind Dinge, die nur in meiner Konfiguration elisp sind, aber ich finde nützlich. Wahrscheinlich nicht von mir geschrieben.
Eingabeaufforderung
Ich erhielt diese von Magnars als Antwort auf die Aufforderung, unter jeden Cursor eine andere Zeichenfolge zu stellen. Der Code ist einfach, aber die Bindung an etwas und die Verwendung für mehrere Cursor ist eine praktische Möglichkeit, an jeder Stelle etwas anderes einzufügen.
Inkrement-Nummer am Punkt
Dies kam entweder von SO oder von emacswiki. Ich weiß nicht was. Es ist sehr nützlich für sich und auch in Kombination mit
mc/insert-numbers
eval-and-replace
Dies ist sehr mächtig und ermöglicht einige wirklich nützliche Teile. Es wertet das Geschlecht aus, das sich hinter dem Cursor befindet, und fügt das Ergebnis der Auswertung ein.
Kombinieren Sie es mit,
multiple-cursors-numbers
um z. B. Potenzen von zwei oder eine Reihe einzufügen, die0 1 2 0 1 2 0 1 2
über jede Zeile oder etwas geht. (Ich habe beides nützlich gemacht) Oder benutze ess.el
, um diese langweilige Java-Konfiguration mit Standard-Dingen zu schreiben. Sie schreiben jedes ausCONFIG_VALUE_VARIABLE
und wandeln es dannCONFIG_VALUE_VARIABLE = "configValueVariable"
durch Ausführen in ums-camel-case
.quelle
C-S-b
oderM-S-b
, um rückwärts zu wählen, bis Sie einen Teil ausgewählt haben. Sie können auch den Linkspfeil verwenden.C->
(drücken Sie die Umschalttaste, wenn sich die Taste>
über der Tastaturtaste befindet), bis Sie mehr als ein Element ausgewählt haben.* Es ist wichtig, rückwärts zu wählen, da sonst der Cursor bei der ersten Auswahl an der falschen Position positioniert wird.
quelle