40 Stimmen

Wie man in Emacs Lisp in die Zwischenablage kopiert

Ich möchte eine Zeichenfolge in die Zwischenablage kopieren (keinen Bereich eines bestimmten Puffers, nur eine einfache Zeichenfolge). Es wäre schön, wenn dies auch in den Kill-Ring aufgenommen würde. Hier ist ein Beispiel:

(copy-to-clipboard "Hello World")

Gibt es diese Funktion? Wenn ja, wie wird sie genannt und wie haben Sie sie gefunden? Gibt es auch eine paste-from-clipboard Funktion?

Ich kann diese Informationen nicht im Lisp-Referenzhandbuch finden, also sagen Sie mir bitte, wie Sie sie gefunden haben.

64voto

Joe Casadonte Punkte 14548

Sie suchen nach kill-new .

kill-new is a compiled Lisp function in `simple.el'.

(kill-new string &optional replace yank-handler)

Make string the latest kill in the kill ring.
Set `kill-ring-yank-pointer' to point to it.
If `interprogram-cut-function' is non-nil, apply it to string.
Optional second argument replace non-nil means that string will replace
the front of the kill ring, rather than being added to the list.

Optional third arguments yank-handler controls how the string is later
inserted into a buffer; see `insert-for-yank' for details.
When a yank handler is specified, string must be non-empty (the yank
handler, if non-nil, is stored as a `yank-handler' text property on string).

When the yank handler has a non-nil PARAM element, the original string
argument is not used by `insert-for-yank'.  However, since Lisp code
may access and use elements from the kill ring directly, the string
argument should still be a "useful" string for such uses.

5voto

scottfrazer Punkte 16641

Ich tue dies:

(with-temp-buffer
  (insert "Hello World")
  (clipboard-kill-region (point-min) (point-max)))

So kommt es in die Zwischenablage. Wenn Sie es auf dem Kill-Ring haben wollen, fügen Sie ein kill-region auch bilden.

0voto

Noufal Ibrahim Punkte 68934

Der Befehl, um Ihre Auswahl in die Zwischenablage des Fenstersystems zu legen, lautet x-select-text . Sie können ihm einen Textblock geben, den er sich merken soll. Also ein (buffer-substring (point) (mark)) oder etwas anderes sollte Ihnen das geben, was Sie brauchen, um es weiterzugeben. In Joes Antwort sehen Sie die Interprogramm-Cut-Funktion. Schauen Sie nach, wie Sie diese finden können.

0voto

Markus Barthlen Punkte 379

In meiner .emacs-Datei verwende ich Folgendes

(global-set-key "\C-V" 'yank)
(global-set-key "\C-cc" 'kill-ring-save)

Ich konnte Strg-C (oder System-Kopie) nicht verwenden, aber das könnte ausreichen, falls sich alte Gewohnheiten einstellen.

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