Configura emacs per tagliare e copiare il testo negli appunti di Mac OS X.


16

Posso configurare emacs, in modo da poter copiare / tagliare il testo da emacs (versione Terminale predefinita) e incollarlo da qualche altra parte (nel programma X Window)?


Nitpick: dici "Versione terminale predefinita", ma la modalità di funzionamento predefinita per Emacs è usare la GUI piuttosto che il terminale di testo. Forse ti riferisci all'antico /usr/bin/emacseseguibile fornito da Apple con OSX e che è arbitrariamente limitato al terminale di testo?
Stefan

Risposte:


4

Per copiare la regione corrente negli appunti di OS X, è possibile utilizzare

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

L'inverso, copiando il buffer di pasta di OS X nell'anello di eliminazione di Emacs, non è raccomandato. Gli anelli di uccisione e gli appunti sono strutture molto diverse e non c'è una buona risposta a cosa dovrebbe fare esattamente inserire gli appunti in un anello di uccisione. Tuttavia, è possibile eseguire pbpastemanualmente per ottenere il contenuto degli appunti corrente.


Questo non ha funzionato per me. La soluzione contrassegnata in questo post di Emacs funziona comunque.
Galder Zamarreño,

8

Aggiungi questo a ~/.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)

Se usi Emacs in iTerm 2, puoi anche rimappare le combinazioni di tasti nelle preferenze:

Quindi aggiungere qualcosa del genere a ~/.emacs:

(global-set-key (kbd "<f13> c") 'pbcopy)
(global-set-key (kbd "<f13> v") 'pbpaste)
(global-set-key (kbd "<f13> x") 'pbcut)

Ancora la migliore risposta. Grazie! Nota per iterm, per creare queste "Azioni" scegli "Invia codice di escape" e ometti il ​​comando "^ [." (non ha funzionato con il tipo di azione "Invia testo")
Jay,

3

Ecco una soluzione per integrare gli Appunti OS X nell'uccisione di Emacs di Daniel Nelson: https://github.com/wesen/emacs/blob/master/pbcopy.el

Commenti dell'autore:

Consente a kill-ring di interagire con gli Appunti quando si esegue Emacs da un terminale Mac OSX (senza perdere la piena funzionalità kill-ring). Tutto quello che ho fatto è stato modificare xclip.elper lavorare con pbcopye pbpaste. I veri ringraziamenti vanno a Leo Shidai Liu, l'autore di xclip.el.


1

Il seguente funziona, capito da qui :)

(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))

Potresti aggiungere un link al post originale?
Vincent,

0

La versione di emacs inclusa in OS X è troppo vecchia per fornire questa funzionalità.

Fortunatamente puoi aggiornare emacs a una versione integrata con gli appunti qui: http://emacsformacosx.com

Credo che tu usi Ctrl+ Yper incollare in emacs, dopo l'aggiornamento.


Ah - ho dimenticato di dire - la versione di emacs che scaricherai da quel sito è grafica (cioè non funziona nel Terminale). È impossibile per le applicazioni nel Terminale accedere agli Appunti senza un hack, che non trovo più. : /
Faiz Saleem

2
pbcopyed pbpasteesistono ancora e non sono hack.

Ciò è possibile, tuttavia ho ipotizzato che l'OP voglia usare i comandi da tastiera per copiare e incollare. Quello che intendevo dire era che le applicazioni Terminal non possono usare le scorciatoie da tastiera per copiare e incollare insieme agli appunti di OS X senza hack.
Faiz Saleem,

"Le applicazioni terminali non possono utilizzare le scorciatoie da tastiera per copiare e incollare insieme agli appunti di OS X senza hack." Questo ovviamente non è vero, poiché pbcopye pbpastesono entrambe le applicazioni terminali; qualsiasi altra app terminale potrebbe fare quello che fanno o semplicemente chiamarli direttamente.

Quello che stavo cercando è agganciare pbcopyEmacs taglia e copia. È possibile?
syntagma,

0

Ho trovato questo post davvero utile (definendo 2 funzioni e assegnando loro delle scorciatoie nel tuo file ~ / .emacs).

Dopo aver aggiunto quelle righe al tuo file .emacs, non avrai accesso a quelle scorciatoie finché non aprirai una nuova sessione di shell (tab / window). Lascia che le modifiche vengano applicate.


0

È possibile ottenere tale interazione con gli Appunti in modo trasparente durante l'esecuzione di Emacs nel terminale di testo abilitando xclip-modeil xclippacchetto fornito che è possibile installare da GNU ELPA (cioè tramite M-x package-list-packages RET).

Vedi anche /emacs/10900/ per una domanda e risposte simili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.