Respuestas:
Para copiar la región actual al portapapeles OS X, puede usar
(shell-command-on-region (region-beginning) (region-end) "pbcopy")
No se recomienda lo contrario, copiar el búfer de pegado de OS X en el anillo de cierre de Emacs. Los anillos de matar y los portapapeles son estructuras muy diferentes y no hay una buena respuesta a lo que, exactamente, empujar un portapapeles en un anillo de matar debería hacer. Aún así, puede ejecutar pbpaste
manualmente para obtener el contenido actual del portapapeles.
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:
Luego agrega algo como esto a ~/.emacs
:
(global-set-key (kbd "<f13> c") 'pbcopy)
(global-set-key (kbd "<f13> v") 'pbpaste)
(global-set-key (kbd "<f13> x") 'pbcut)
Aquí hay una solución para integrar el portapapeles OS X al anillo de ataque de Emacs de Daniel Nelson: https://github.com/wesen/emacs/blob/master/pbcopy.el
Comentarios del autor:
Permite que kill-ring interactúe con el portapapeles cuando se ejecuta Emacs desde un terminal Mac OSX (sin perder la funcionalidad completa de kill-ring). Todo lo que hice fue modificar
xclip.el
para trabajar conpbcopy
ypbpaste
. El verdadero agradecimiento a Leo Shidai Liu, el autor de xclip.el.
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))
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 integrada con su portapapeles aquí: http://emacsformacosx.com
Creo que usas Ctrl+ Ypara pegar en emacs, después de la actualización.
pbcopy
y pbpaste
son ambas aplicaciones del terminal; cualquier otra aplicación de terminal podría hacer lo que hacen, o simplemente llamarlos directamente.
pbcopy
a Emacs cortar y copiar. ¿Es posible?
Encontre esto publicación realmente útil (definiendo 2 funciones y asignándoles atajos 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). Deje que se apliquen los cambios.
Puede obtener dicha interacción con el portapapeles de forma transparente mientras ejecuta Emacs en el terminal de texto habilitando lo xclip-mode
proporcionado por el xclip
paquete que puede instalar desde GNU ELPA (es decir, a través deM-x package-list-packages RET
).
Consulte también /emacs/10900/ para obtener una pregunta y respuestas similares.
/usr/bin/emacs
ejecutable que Apple incluye con OSX y que se limita arbitrariamente al terminal de texto?