Ich möchte einen Block in Emacs auswählen oder hervorheben, ohne die Maus zu verwenden, aber dies über die Tastatur tun, wie im visuellen Modus von vim. Was ist der einfachste Weg, dies über eine Tastatur zu tun?
Ich möchte einen Block in Emacs auswählen oder hervorheben, ohne die Maus zu verwenden, aber dies über die Tastatur tun, wie im visuellen Modus von vim. Was ist der einfachste Weg, dies über eine Tastatur zu tun?
Antworten:
Schauen Sie sich das Regionsrechteck in Emacs an.
Kurz gesagt, Sie starten die Auswahl wie gewohnt mit Control- Space, töten dann die Region mit Control- x r kund fügen (oder ziehen ) den getöteten Block mit Control- ein x r y.
Wenn ich die Frage richtig verstehe, geht es ursprünglich nicht um rechteckige Bereiche.
C-Spc
markiert die aktuelle Position.
Wo immer sich Ihr Cursor danach befindet, wird der Text zwischen der letzten Markierung und der aktuellen Position "ausgewählt" (Sie können dies durch Aktivieren hervorheben transient-mark-mode
, dies bedeutet jedoch auch, dass Markierungen gelöscht werden müssen, wenn Sie keine Hervorhebung wünschen).
Sie können diese Region mit folgenden Befehlen bearbeiten:
C-w
. . Region töten. Dadurch wird die Region gelöscht und in den Tötungsring versetzt.
C-y
. . Ruck. Dadurch wird das letzte Snippet aus dem Kill Ring eingefügt.
M-y
. . Zyklus töten Ring. Unmittelbar danach C-y
ersetzt dies den gezogenen Teil durch die anderen Schnipsel im Tötungsring.
M-w
. . Region im Kill Ring speichern. Wie C-w
, aber nicht löschen.
Dies ist nur die grundlegende Verwendung. Marken haben auch andere Verwendungszwecke. Ich empfehle das Tutorial ( C-h t
).
C-s
C-r
in diesem Zusammenhang häufig verwendet wird, um das Ende / den Anfang der Region zu ermitteln. (Besonders nützlich in einem Makro.)
M-x indent-region
.
indent-region
funktioniert zwar ganz gut, aber das c-indent-line-or-region
(das, das an die Tabulatortaste gebunden ist) nicht. Die letzte Funktion funktioniert nicht für die markierten Regionen, sondern für die ausgewählten Regionen, dh für die Region, die hervorgehoben wird, als hätten Sie sie mit der Maus ausgewählt.
C-Spc
du zweimal triffst, wo du die Marke gesetzt hast. Dadurch wird der Transient-Mark-Modus vorübergehend aktiviert (bis Sie (mit C-g
) abbrechen ). Verschieben Sie dann den Punkt, um den ausgewählten Bereich anzuzeigen.
Emacs 24.4 hat jetzt den Rechteck-Markierungsmodus. Cx Leerzeichen, um es aufzurufen.
Siehe den Artikel: "Arbeiten mit rechteckigen Auswahlen" , insbesondere den Kommentarbereich. Siehe auch den Abschnitt der Dokumentation zum CUA-Modus mit dem Titel "Unterstützung von CUA-Rechtecken". Es gibt auch ein schönes Video auf Vimeo .
Obwohl dies C-SPC
ein üblicher Weg ist, um etwas von jedem Punkt aus zu markieren, gibt es oft schnellere / einfachere Wege, bei denen nicht explizit zu Start- / Endpunkten gewechselt wird ...
M-h
- ein wichtiges Mittel zum Markieren eines Absatzes . Ein "Absatz" bedeutet oft einen Codeblock.
C-M-h
und C-M-@
- zum Markieren von Sexps bzw. Defuns . Dies funktioniert für mehrere Sprachen, nicht nur für Lisps.
Halten Sie die Umschalttaste gedrückt - eine weitere raffinierte Methode, um während der Bewegung hervorzuheben. ZB M-S-f
wählt ein ganzes Wort weiter. Dies ist
shift-select-mode
und es ist standardmäßig in Emacs 24+ aktiviert. Bei einigen (Nicht-Chiclet-) Tastaturen sollten Sie in der Lage sein, C-S-
mit einem einzigen kleinen Finger gedrückt zu halten .
Sie können eine dieser Tasten wiederholt drücken, um die Auswahl zu erweitern.
(HINWEIS: Verwenden Sie diese Option C-g
häufig, um die Markierung während des Experimentierens abzubrechen.)
Es gibt einige Zusatzpakete , die die Auswahl von Regionen und Dingen verbessern. Diese spielen alle gut zusammen und passen zu verschiedenen Anwendungsfällen. Benutze sie alle!
Region erweitern : Region erweitern erweitert die ausgewählte Region um semantische Einheiten. Drücken Sie einfach die Taste, bis Sie auswählen, was Sie möchten. C-=
ist eine empfohlene Bindung dafür. Schlagen Sie es ein paar Mal, um das zu bekommen, was Sie brauchen.
Easy-Kill : Verwenden SieM-w
und eine Mnemonik, um verschiedene Arten von Dingen auszuwählen, wie Wörter, Sexps, Listen usw.
Zop-to-Char : Wie Zap-to-Char , bietet jedoch eine gute Auswahl und andere menügesteuerte Aktionen.
diff-hl : Markieren Sie nicht festgeschriebene geänderte Regionen. Verwenden Siediff-hl-mark-hunk
diese Option, um ein Stück auszuwählen / zu markieren.
Verwenden Sie Control- Space, um eine Markierung zu setzen und den Cursor zu bewegen.
Das transient-mark-mode
hebt die Auswahl für Sie hervor. M- x transient-mark-mode
.
Sie können Emacs so einrichten, dass dieser Modus standardmäßig mithilfe einer Anpassung aktiviert wird. M- x customize-option
RET transient-mark-mode
.
... und falls Sie Ubuntu verwenden und C-spcnicht für Sie arbeiten: Sie müssen die IBus-Tastenkombination "Nächste Eingabemethode" wie in löschen
Führen Sie
ibus-setup
die Schlüsselbindung für "Nächste Eingabemethode" aus und ändern Sie sie in eine andere (oder löschen Sie sie vollständig, indem Sie auf die Schaltfläche "..." und dann auf die Schaltfläche "Löschen" klicken).
Zitat aus einer Antwort auf eine SO-Frage.
Um die Antwort von Edin Salkovic zu erweitern, können Sie im CUA-Modus eine visuelle Blockauswahl starten. Es gibt viele Verknüpfungen zur Steuerung der Blockauswahl, die in der Dokumentation von CUA beschrieben sind .
Drücken Sie bei Emacs 25 einfach C- Spaceund bewegen Sie den Cursor an eine beliebige Stelle, um den gewünschten Textbereich hervorzuheben / auszuwählen. Danach benötigen Sie möglicherweise die folgenden Befehle:
mark-defun