Configurar emacs para cortar y copiar texto al portapapeles de Mac OS X

15

¿Puedo configurar emacs , para poder copiar / cortar texto de emacs (versión de Terminal predeterminada) y pegarlo en otro lugar (en el programa X Window)?

    
pregunta syntagma 12.03.2013 - 18:52

7 respuestas

3

Para copiar la región actual al portapapeles de OS X, puede utilizar

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

La inversa, no se recomienda copiar el búfer OS X paste al anillo de eliminación de Emacs. Los anillos de matanza y los portapapeles son estructuras muy diferentes y no hay una buena respuesta a lo que, exactamente, debe ser empujar un portapapeles en un anillo de matanza. Aún así, puede ejecutar pbpaste manualmente para obtener el contenido actual del portapapeles.

    
respondido por el user36802 16.03.2013 - 13:40
7

Agregue esto 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)

Si usa Emacs en iTerm 2, también puede reasignar combinaciones de teclas en las preferencias:

Luegoagregaalgocomoestoa~/.emacs:

(global-set-key(kbd"<f13> c") 'pbcopy)
(global-set-key (kbd "<f13> v") 'pbpaste)
(global-set-key (kbd "<f13> x") 'pbcut)
    
respondido por el user495470 10.04.2014 - 05:02
3

Aquí hay una solución para integrar OS X Clipboard al kill-ring de Emacs por Daniel Nelson: enlace

Comentarios del autor:

  

Permite que el kill-ring interactúe con el portapapeles cuando se ejecuta Emacs desde una terminal Mac OSX (sin perder la funcionalidad completa del kill-ring). Todo lo que hice fue modificar xclip.el para trabajar con pbcopy y pbpaste . El agradecimiento real es para Leo Shidai Liu, el autor de xclip.el.

    
respondido por el ristohietal 26.08.2013 - 11:11
1

Lo siguiente simplemente funciona, lo obtuve desde aquí :)

(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))
    
respondido por el Galder Zamarreño 27.04.2015 - 18:06
0

La versión de emacs que se incluye con OS X es demasiado antigua para proporcionar esta funcionalidad.

Afortunadamente, puede actualizar emacs a una versión que se integra con su portapapeles aquí: enlace

Creo que utilizas Ctrl + Y para pegar emacs, después de la actualización.

    
respondido por el Faiz Saleem 15.03.2013 - 22:33
0

Encontré esta publicación realmente útil (definir 2 funciones y asignar accesos directos a ellos en su archivo ~ / .emacs).

Después de agregar esas líneas a su archivo .emacs, no tendrá acceso a esos accesos directos hasta que abra una nueva sesión de shell (pestaña / ventana). Deja que los cambios se apliquen.

    
respondido por el Javad Sadeqzadeh 24.01.2015 - 04:13
0

Puede obtener dicha interacción de manera transparente con el portapapeles mientras ejecuta Emacs en el terminal de texto habilitando el xclip-mode proporcionado por el paquete xclip que puede instalar desde GNU ELPA (es decir, a través de M-x package-list-packages RET ).

Consulte también enlace para obtener una pregunta y respuestas similares.

    
respondido por el Stefan 18.01.2018 - 15:45

Lea otras preguntas en las etiquetas