Wie füge ich Text ein, der vor dem letzten Einfügen kopiert wurde (Alt-W) (Strg-Y)?

7

Sobald ich einen Text ausgewählt habe Alt-w, kopiere ich die Region und ctrl-yfüge sie ein. Gibt es eine Möglichkeit, etwas einzufügen, das ich Alt-wvor meiner letzten Einfügung ausgewählt und kopiert habe?

Vass
quelle
1
Versuchen Sie es C-y M-yund wiederholen Sie M-yso oft Sie müssen.
Legoscia
Siehe auch undo-treeModus.
Mankoff

Antworten:

5

Drücken Sie nach dem Ziehen mit C-y, M-yum den Befehl auszuführen yank-pop. Wiederholtes Drücken durchläuft die kill-ring.

Zum Beispiel, wenn Sie haben:

Hello, world!

und du tötest Hellound world(du bist , !gegangen), dann gehst du zur nächsten Zeile und drückst:

C-y world

M-y Hello

SPCC-y Hello Hello

C--M-y Hello world

Kindermädchen
quelle
Wenn ich drücke M-y, heißt es, dass der vorherige Befehl kein Ruck war
Vass
@Vass Ja, Sie müssen den Befehl yank( C-y) ausführen und dann drücken, M-yum durchzugehen .
Kindermädchen
Ich wähle Text aus und drücke dann Cy und es wird sofort eingefügt
Vass
1
@Vass Ich verstehe nicht was du meinst. C-yführt den Befehl aus yank, der dem Konzept des "Einfügens" entspricht. Jedes Mal, wenn Sie Text beenden oder mit C-w( kill-ring-save) kopieren , wird er in den Text verschoben kill-ring. Wenn Sie C-ydrücken, wird das erste Element von kill-ringeingeblendet und in den Puffer eingefügt. Durch nachfolgendes Drücken von M-y( kill-ring-pop) werden die im kill-ring.
Kindermädchen
1
@Vass, oops, das ist ein Tippfehler von meiner Seite. Es hätte lesen sollen M-w. Der Befehl ist jedoch richtig.
Kindermädchen
3

@nanny hat dir die Antwort gegeben. Und wenn Sie M-ysagen, dass der vorherige Befehl kein Ruck war, haben Sie wahrscheinlich vergessen, dies C-yzuerst zu tun . IOW, du machst C-yzuerst den letzten Kill, was du nicht willst. Dann müssen Sie M-ystattdessen die vorherige herunterladen. Sie können wiederholen, M-yum rückwärts zu fahren.

Allgemeine Informationen zum Kopieren und Einfügen finden Sie im Emacs-Handbuch, Knoten Yankingkill-ring .


Jedenfalls wollte ich die sekundäre Auswahl erwähnen . Insbesondere kann es sehr praktisch sein, wenn Sie es andernfalls verwenden möchten C-y M-y.

Die sekundäre Auswahl ist genau das, was sie sagt: eine zweite Auswahl, die nichts mit der Auswahl in der Region in Emacs zu tun hat. Es bleibt verfügbar, unabhängig davon, ob die Region aktiv ist, und ihre Position wird nicht durch Punkt oder Markierung beeinflusst.

Wenn Sie die Bibliothek verwenden, erhalten second-sel.elSie viele der Vorteile der kill-ring(für die Region) auch für die sekundäre Auswahl. Es fügt die sekundäre Auswahl einem zweiten Auswahlring hinzu secondary-selection-ring, der dem ähnlich, aber von diesem getrennt ist kill-ring. Außerdem wird verhindert, dass die sekundäre Auswahl zum hinzugefügt wird kill-ring, sodass Sie jetzt zwei separate Auswahlverlaufsringe haben.

M-y Anschließend werden Elemente aus dem entsprechenden Ring zyklisch ausgeführt, je nachdem, ob sie einem Ruck der primären (Region) oder dem Einfügen der sekundären Auswahl folgen.

Drew
quelle
Also benutze ich Alt-w nicht zum Kopieren? Ich muss es töten?
Vass
2
Nein, Sie können M-w(Alt-w, wenn Sie so wollen) zum Kopieren verwenden. Wenn Sie dies tun, werden C-h k M-wSie sehen, dass dies an M-wgebunden ist kill-ring-save, und Sie werden sehen, was dieser Befehl bewirkt - er kopiert die Region in die kill-ring. Die Textteile, die sich in kill-ringbefinden, werden als "Kills" bezeichnet, unabhängig davon, ob sie durch Töten von Text oder Kopieren von Text (z M-w. B. Verwenden von ) dort angekommen sind .
Drew
2

Die beste Lösung, die ich gefunden habe, ist helm-show-kill-ring. Ich habe Helm eine ganze Weile benutzt, bevor mir überhaupt klar wurde, dass es ihn gibt. Ich habe es gebunden M-y. Es macht es sehr schnell und einfach, vorhandene Einträge zu sehen, sie einzugrenzen und den gewünschten auszuwählen.

Blujay
quelle
1

Ersetzt nach dem Einfügen M-yden eingefügten Text durch zuvor kopierten Text.

Wenn Sie M-ymehrmals drücken , können Sie den gesamten zuvor kopierten (oder ausgeschnittenen / getöteten) Text durchlaufen

Tomwalker
quelle
0

Wenn Sie zuvor kopierte und getötete Textteile leicht sehen und ein oder mehrere solcher Teile auswählen möchten, können diese helfen:

  • Kill Ringkill-ring durchsuchen- Durchsuchen Sie den, um einen Kill zum Ziehen zu wählen. Diese Seite zeigt mehrere alternative Bibliotheken, die dieses Verhalten auf unterschiedliche Weise anbieten. Der wichtigste istbrowse-kill-ring.el.

  • Eiszapfen -

    • M-y: Ziehen Sie entweder vom kill-ringoder vom secondary-selection-ring, je nach dem letzten Typ (Sie benötigen eine Bibliothek second-sel.elfür die zweite Alternative). Wenn der letzte Befehl kein Ruck war, ist dies derselbe wie C-- C-y(siehe weiter).
    • C-- C-y( C-ymit einem negativen Präfix arg): Hier können Sie eine beliebige Anzahl von Kills auswählen, die nach Abschluss eingefügt werden sollen. Während der Fertigstellung können Sie verwenden:

      • C-, die Kandidaten zu sortieren, um auf verschiedene Weise zu ziehen (wiederholen)
      • S-delete um einen Kandidateneintrag aus dem Auswahlring zu entfernen
      • C-S-return um einen Kandidaten in den anderen Auswahlring zu kopieren
  • Helm - Siehe @ bluejays Antwort auf dieser Seite.

Drew
quelle