Ich möchte eine Auswahl vergrößern, ohne den Punkt (den Cursor) von seiner Position zu bewegen. Ich weiß, dass ich immer C-u C-spc
zum vorherigen Standort wechseln kann, aber das möchte ich vermeiden.
Insbesondere möchte ich beide Operationen ausführen:
- Wählen Sie den gesamten Text im Puffer aus
- Fügen Sie der Auswahl schrittweise nachfolgende Zeilen / Absätze hinzu
während Sie den Cursor dort halten, wo er ist.
Hat Emacs dafür interaktive Funktionen? Sind sie an Tastaturkürzel gebunden?
C-u C-spc
.Antworten:
Für jeden der aufgeführten Punkte gibt es eine separate Antwort:
Die Emacs-Standardbindung C-x hwählt den gesamten Puffer aus, unabhängig davon, wo sich der Cursor befindet.
Das Paket zur Erweiterung der Region wird dazu beitragen, das zweite Ziel einer schrittweisen Erweiterung der Auswahl zu erreichen.
expand-region
wählt schließlich auch den gesamten Puffer aus, während Sie die Region weiter erweitern. Weitere Informationen finden Sie in der Readme-Datei auf Github. Dieses Paket ist über MELPA erhältlich.Hier ist eine kurze Einführung in dieses Paket von seinem Github:
Ich möchte jedoch hinzufügen, dass das Ändern der Regionsauswahl in beiden Fällen den Cursor immer noch bewegt.
quelle
C-x h
sich der Cursor bewegt: zum Ende des Puffers und dann zum Anfang des Puffers. Sie müssenC-u C-spc
zweimal dorthin zurückkehren, wo Sie waren.Wenn die Region wächst, ändert der Cursor die Position. Dies liegt daran, dass sich der Cursor immer an einem Ende der Region befindet.
Wenn Sie den gesamten Puffertext auswählen (
C-x h
und dannC-x C-x
Punkt und Markierung tauschen, sodass sich der Cursor am Ende des Textes befindet) und dann weiteren Text eingeben, haben Sie das erreicht, was Sie möchten: Die Region war erweitert, um den eingegebenen Text einzuschließen. (Dies setzt voraus, dass Sie nicht eingeschaltet habendelete-selection-mode
.)Die Region wurde ebenfalls automatisch deaktiviert, sodass der Regionstext nicht mehr hervorgehoben wird. Um die Region wieder zu aktivieren, tun
C-x C-x
Sie dies (was Sie wiederholen können, wenn Sie den Cursor am Pufferende halten möchten.quelle
Wie bereits erwähnt, ist das
expand-region
Paket großartig, aber ich finde es auch erwähnenswerteasy-kill
. Es wird als Ersatz ersetztkill-ring-save
, der die normaleM-w
"Kopie" in einen dynamischen Kopierbefehl verwandelt, der auch als Präfix zum Speichern verschiedener Dinge dient. Zum BeispielM-w
würde die aktive Region, URL, E-Mail oder aktuelle Zeile (in der Reihenfolge voneasy-kill-try-things
)M-w d
kopiert , gefolgt von einem "d" , aber die aktuelle Definition wird zwangsweise kopiert.Es gibt auch eine Methode zum Erweitern / Verkleinern der aktuellen Auswahl, ähnlich
expand-region
wie einen Befehleasy-mark
zum Markieren von Regionen, ohne den aktuellen Punkt zu ändern.quelle
Wenn Sie etwas kopiert haben, können Sie der Auswahl später Text hinzufügen, indem Sie Folgendes verwenden
C-M-w
:C-M-w
(append-next-kill
) und dann kopieren, was Sie wollen (M-w
).quelle
Wie in anderen Antworten angegeben:
C-xh wählt den gesamten Puffer aus;
(mark-whole-buffer)
Wenn Sie Ihre Auswahl erweitern möchten, verwenden Sie am einfachsten die
mark-*
Befehle.Als Beispiel für eine Schlüsselbindung:
C-M-SPC
(mark-sexp)
markiert den Sexp am Punkt. Wenn Sie den Befehl wiederholen, wird der Auswahl das folgende Geschlecht hinzugefügt. Der Cursor bleibt an der aktuellen Position oder bewegt sich zum Anfang des Objekts (Absatz / Geschlecht), um sicherzustellen, dass es vollständig markiert ist.quelle
(mark-whole-buffer)
Zuordnungen zu <kbd> Cmd-a </ kbd> unter OSX, um eine gewisse Ähnlichkeit mit der typischen OSX-Funktionalität zu erhalten.Wenn Sie mit der Maus einverstanden sind, können Sie die sekundäre Auswahl verwenden . Drücken Sie Meta, klicken Sie und ziehen Sie die linke Maustaste (
M-drag-mouse-1
). Dadurch wird der Punkt nicht verschoben, solange Sie nur Text kopieren, der auf dem Bildschirm angezeigt wird. Sie können die sekundäre Auswahl mitM-mouse-3
kopieren und mit ziehenM-mouse-2
.Abgesehen von der sekundären Auswahl müssen Sie den Cursor bewegen, um beliebigen Text auszuwählen, da der Cursor ein Ende der Auswahl ist (das andere ist die Markierung).
Wenn Sie in einem Puffer arbeiten möchten, ohne den Punkt zu beeinflussen, können Sie den Puffer in einem zweiten Fenster (
C-x 2
oderC-x 3
) öffnen . Jedes Fenster hat seinen eigenen Punkt. Wenn Sie mit der Auswahl und anderweitigen Bearbeitung fertig sind, schließen Sie das Fenster (C-x 0
) und kehren Sie zum anderen zurück.Für mehr Flexibilität können Sie den aktuellen Puffer klonen. Führen Sie aus
M-x clone-indirect-buffer
oderC-x 4 c
erstellen Sie ein neues Fenster mit diesem Puffer. Der Klon hat den gleichen Text wie das Original, aber eine eigene Markierung und einen eigenen Punkt.Wenn Sie bereits Text getötet haben, können Sie mehr Text anhängen, indem Sie
C-M-w
(append-next-kill
) eingeben und dann einen Befehl kill verwenden. Zum BeispielC-M-w C-k
hängt den Schwanz der aktuellen Zeile mit dem Text, der bereits an der Vorderseite des Kill - Rings ist, und löscht den kopierten Text.C-M-w M-w
Hängt die Auswahl an den Text an der Vorderseite des Kill-Rings an (im Gegensatz dazu wirdM-w
der ausgewählte Text als neuer Eintrag im Kill-Ring verschoben ).quelle