2010-02-01 3 views
20

Ich möchte eine Zeichenfolge in die Zwischenablage kopieren (keine Region eines bestimmten Puffers, nur eine einfache Zeichenfolge). Es wäre schön, wenn es auch dem Tötungsring hinzugefügt würde. Hier ein Beispiel:In Emacs kopieren Lisp

(copy-to-clipboard "Hello World")

Enthält diese Funktion gibt es? Wenn ja, wie heißt es und wie hast du es gefunden? Gibt es auch eine paste-from-clipboard Funktion?

Ich kann diesen Stoff im Lisp Reference Manual nicht finden, bitte sagen Sie mir wie Sie ihn gefunden haben.

+1

Sie kann diese Frage hilfreich finden: http://stackoverflow.com/questions/64360 –

Antwort

36

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. 
+1

Sieht sehr vielversprechend aus. Wie hast du das gefunden? – User1

+0

Ich habe es vor vielen, vielen Jahren selbst gebraucht. Kann mich nicht erinnern, wie ich es gefunden habe. –

+0

Nun, (kill-new "Hallo Welt") hat super funktioniert. Vielen Dank! – User1

3

ich dies tun:

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

, dass es auf der Zwischenablage wird. Wenn Sie es auf dem Kill-Ring wollen, fügen Sie ein kill-region Formular hinzu.

+0

'copy-region-as-kill' kann auf einmal in die Zwischenablage kopieren und kill-ring: ' copy-region-as-kill ist eine interaktive kompilierte Lisp-Funktion in 'simple.el '. (Ende der Kopie-Region-als-Kill Begin) Speichern Sie die Region als ob getötet, aber nicht töten. Deaktivieren Sie im Transient Mark-Modus die Markierung. Wenn "interprogram-cut-function" nicht-nil ist, speichere auch den Text für ein Fenster system cut and paste.' –

0

Der Befehl zum Einfügen Ihrer Auswahl in die Zwischenablage des Fenstersystems lautet x-select-text. Sie können ihm einen Textblock geben, an den Sie sich erinnern können. So eine (buffer-substring (point) (mark)) oder etwas sollte Ihnen geben, was Sie brauchen, um es zu übergeben. In Joes Antwort sehen Sie die Interprogramm-Cut-Funktion. Schauen Sie nach, wie Sie das finden können.

0

In meiner .emacs-Datei, ich benutze diese

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

ich Ctrl-C nicht (oder Systemkopie) verwenden könnte, aber dies treten bei alten Gewohnheiten genug sein kann.