12 Stimmen

Kann ich das gleiche Element für Yanks in Emacs behalten?

In Emacs schneide ich oft einen Teil des Textes aus und ersetze dann einen anderen Teil durch den ausgeschnittenen Text. Sagen wir, ich habe den Text, den ich ausschneiden möchte, als letztes Element in meinem kill-ring . Ich ziehe ihn an die neue Stelle und lösche dann den Text, der sich bereits dort befand. Aber jetzt ist der gelöschte Text das letzte Element in der kill-ring . Wenn ich also das nächste Mal den ersten Punkt herausziehen will, muss ich Folgendes tun C-y M-y . Wenn dann das nächste Mal zwei neuere Einträge in der kill-ring Ich muss also Folgendes tun C-y M-y M-y , und so weiter.

Ich vermute, es gibt einen besseren Weg, dies zu tun. Kann mich bitte jemand aufklären?

10voto

huaiyuan Punkte 25393

Mehrere Alternativen:

  1. Einschalten delete-selection-mode und verwenden C-d o delete um die Region zu löschen, ohne den Kill-Ring zu berühren.
  2. Utilisez C-x r s i um Text im Register i und später zu speichern, C-x r i i um den gespeicherten Text einzufügen.
  3. Wenn das Muster der zu ersetzenden Texte in einem regulären Ausdruck erfasst werden kann, verwenden Sie query-replace-regexp ( C-M-% ).

6voto

Jérôme Radix Punkte 9525

Sie sollten Folgendes verwenden delete-region anstelle von kill-region .

delete-region löscht die Region, ohne sie in den Kill Ring zu setzen. Sie ist gebunden an <menu-bar> <edit> <clear> standardmäßig.

Wenn Sie nur die Standardbindungen verwenden wollen, ohne das Menü zu benutzen, können Sie delete-rectangle con C-x r d aber es funktioniert bei Rechteck. Es könnte in Ordnung sein, es auf einer einzelnen Linie zu verwenden, wie delete-region .

4voto

Drew Punkte 28662

Eines der ältesten und bestgehüteten Geheimnisse in Emacs - keine Ahnung warum: Emacs hat eine Sekundärauswahl .

Und genau dafür ist sie gut. Es speichert eine weitere Auswahl an Text, die Sie immer wieder verwenden können.

Wählen Sie einen Text aus, und ziehen Sie dann den sekundären Text ein, um ihn zu ersetzen. Wiederholen Sie dies an anderer Stelle. Oft ist dies bequemer, flexibler und präziser als etwas wie "Ersetzen durch Abfrage".

Schauen Sie es sich in Ihrem eigenen Interesse an - vielleicht ist es dann nicht mehr so wenig bekannt... http://www.emacswiki.org/emacs/SecondarySelection

2voto

scottfrazer Punkte 16641

Ich habe diese Funktion geschrieben, um das neueste Element aus dem Kill-Ring zu entfernen:

(defun my-kill-ring-pop ()
  "Pop the last kill off the ring."
  (interactive)
  (when kill-ring
    (setq kill-ring (cdr kill-ring)))
  (when kill-ring-yank-pointer
    (setq kill-ring-yank-pointer kill-ring))
  (message "Last kill popped off kill-ring."))

Nachdem ich also etwas getötet habe, das ich nicht behalten möchte, drücke ich eine Taste, die dies aufruft.

0voto

aartist Punkte 2985

Damit verbunden ist M-x browse-kill-ring . Wenn Sie M-x anything können Sie auch verwenden M-x anything-show-kill-ring .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X