Konfigurieren Sie Emacs zum Ausschneiden und Kopieren von Text in die Zwischenablage von Mac OS X

16

Kann ich konfigurieren emacs, dass ich Text aus Emacs (Standard-Terminal-Version) kopieren / ausschneiden und an einer anderen Stelle einfügen kann (in ein X Window-Programm)?

syntagma
quelle
Nitpick: Sie sagen "Standard-Terminal-Version", aber der Standard- Funktionsmodus für Emacs ist die Verwendung der GUI anstelle des Text-Terminals. Vielleicht beziehen Sie sich auf die alte /usr/bin/emacsausführbare Datei, die von Apple mit OSX gebündelt wurde und die willkürlich auf das Textterminal beschränkt ist?
Stefan

Antworten:

4

Mit können Sie den aktuellen Bereich in die OS X-Zwischenablage kopieren

(shell-command-on-region (region-beginning) (region-end) "pbcopy")

Das umgekehrte Kopieren des OS X-Einfügepuffers in den Emacs-Killring wird nicht empfohlen. Tötungsringe und Zwischenablagen sind sehr unterschiedliche Strukturen und es gibt keine gute Antwort darauf, was genau das Schieben einer Zwischenablage in einen Tötungsring bewirken sollte. Sie können jedoch pbpastemanuell ausgeführt werden, um den aktuellen Inhalt der Zwischenablage abzurufen.


quelle
Das hat bei mir nicht funktioniert. Die markierte Lösung in diesem Emacs-Beitrag funktioniert jedoch.
Galder Zamarreño
8

Fügen Sie dies hinzu zu ~/.emacs:

(defun pbcopy ()
  (interactive)
  (call-process-region (point) (mark) "pbcopy")
  (setq deactivate-mark t))

(defun pbpaste ()
  (interactive)
  (call-process-region (point) (if mark-active (mark) (point)) "pbpaste" t t))

(defun pbcut ()
  (interactive)
  (pbcopy)
  (delete-region (region-beginning) (region-end)))

(global-set-key (kbd "C-c c") 'pbcopy)
(global-set-key (kbd "C-c v") 'pbpaste)
(global-set-key (kbd "C-c x") 'pbcut)

Wenn Sie Emacs in iTerm 2 verwenden, können Sie Tastenkombinationen auch in den Einstellungen neu zuordnen:

Fügen Sie dann Folgendes hinzu ~/.emacs:

(global-set-key (kbd "<f13> c") 'pbcopy)
(global-set-key (kbd "<f13> v") 'pbpaste)
(global-set-key (kbd "<f13> x") 'pbcut)
Lri
quelle
Immer noch die beste Antwort. Vielen Dank! Hinweis: Um diese "Aktionen" zu erstellen, wählen Sie "Escape-Code senden" und lassen Sie das führende "^ [" weg. (Funktionierte nicht mit Aktionstyp "Text senden")
Jay
3

Hier ist eine Lösung, um OS X Clipboard in Emacs Kill-Ring von Daniel Nelson zu integrieren: https://github.com/wesen/emacs/blob/master/pbcopy.el

Anmerkungen des Autors:

Ermöglicht es dem Kill-Ring, mit der Zwischenablage zu interagieren, wenn Emacs auf einem Mac OSX-Terminal ausgeführt wird (ohne die volle Kill-Ring-Funktionalität zu verlieren). Alles, was ich getan habe, war, Änderungen xclip.elan pbcopyund vorzunehmen pbpaste. Der wahre Dank geht an Leo Shidai Liu, den Autor von xclip.el.

ristohietal
quelle
1

Folgendes funktioniert einfach, habe es von hier :)

(defun copy-from-osx ()
  (shell-command-to-string "pbpaste"))

(defun paste-to-osx (text &optional push)
  (let ((process-connection-type nil))
    (let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
      (process-send-string proc text)
      (process-send-eof proc))))

(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx))
Galder Zamarreño
quelle
Könnten Sie einen Link zum ursprünglichen Beitrag hinzufügen?
Vincent
0

Die in OS X enthaltene Emacs-Version ist zu alt, um diese Funktionalität bereitzustellen.

Zum Glück können Sie Emacs auf eine Version aktualisieren, die in Ihre Zwischenablage integriert ist: http://emacsformacosx.com

Ich glaube, dass Sie nach dem Update Ctrl+ verwenden, Yum Emacs einzufügen.

Faiz Saleem
quelle
Ah - ich habe vergessen zu sagen - die Version von Emacs, die Sie von dieser Site herunterladen, ist grafisch (dh sie läuft nicht im Terminal). Anwendungen im Terminal können ohne einen Hack, den ich nicht mehr finde, nicht auf die Zwischenablage zugreifen. : /
Faiz Saleem
2
pbcopyund pbpasteexistieren immer noch und sind keine Hacks.
Das ist möglich, aber ich nahm an, dass das OP Tastaturbefehle zum Kopieren und Einfügen verwenden möchte. Ich wollte damit sagen, dass Terminal-Anwendungen keine Tastenkombinationen zum Kopieren und Einfügen zusammen mit der OS X-Zwischenablage ohne Hacks verwenden können.
Faiz Saleem
"Terminal-Anwendungen können keine Tastenkombinationen zum Kopieren und Einfügen zusammen mit der OS X-Zwischenablage ohne Hacks verwenden." Dies ist offensichtlich nicht wahr, da pbcopyund pbpastebeide Terminalanwendungen sind; Jede andere Terminal-App könnte das tun, was sie tun, oder sie einfach direkt anrufen.
Was ich gesucht habe, ist das Einbinden pbcopyin Emacs cut & copy. Ist es möglich?
Syntagma
0

Ich fand diesen Beitrag wirklich nützlich (Definition von 2 Funktionen und Zuweisung von Verknüpfungen zu diesen in Ihrer ~ / .emacs-Datei).

Nachdem Sie diese Zeilen zu Ihrer .emacs-Datei hinzugefügt haben, haben Sie erst dann Zugriff auf diese Verknüpfungen, wenn Sie eine neue Shell-Sitzung (Registerkarte / Fenster) öffnen. Übernehmen Sie die Änderungen.

Javad Sadeqzadeh
quelle
0

Sie können eine solche Interaktion mit der Zwischenablage transparent erhalten, während Sie Emacs im Textterminal ausführen, xclip-modeindem Sie das xclipPaket aktivieren , das Sie von GNU ELPA (dh über M-x package-list-packages RET) installieren können .

Eine ähnliche Frage und Antwort finden Sie unter /emacs/10900/ .

Stefan
quelle