¿Cómo pegar a Emacs desde el portapapeles en OSX?
osx-lion paste (7)
En Windows
? Tengo M-ins
obligado a h-insert-x-selection
, que he definido de la siguiente manera:
(defun h-insert-x-selection () (interactive)
(insert (x-selection ''CLIPBOARD)))
(global-set-key [(meta insert)] ''h-insert-x-selection)
En XEmacs
es diferente, donde tengo
(global-set-key [(shift insert)] ''x-insert-selection)
Esto podría ser extraordinariamente simple, pero estoy jugando con Emacs (22.1.1) y no puedo hacer que pegue texto en el portapapeles usando Control - Y.
Eso es extraño.
Uso command-V, y funciona todo el tiempo.
Cuando te enfocas en la ventana de la terminal, cualquier cosa que pegues a través del comando-V se convierte en pulsaciones de teclas separadas que se envían al terminal.
Uso Mac OS X 10.5 (Leopard) y emacs 22.1.1.
Intenta usar el comando Mx clipboard-yank
. Si desea copiar texto en el portapapeles, tiene que Mx clipboard-kill-region
.
Esto funciona en Linux y Windows, supongo que en Mac es lo mismo.
OS suse 12.2 - la versión predeterminada de emacs 24.2-15.8.2 (x86_64) simplemente ignoró pegar desde el portapapeles por ctrl-y Finalmente el problema se resolvió por down grade a la versión 23.3-15.5.1 (x86_64)
Si está utilizando el Emacs incorporado, entonces está ejecutando Emacs en la terminal. El "portapapeles" es una función de su sistema de ventanas. Emacs en modo terminal ( -nw
) no tiene acceso a ninguna API específica del sistema de ventanas. Esto es cierto para la mayoría de las herramientas de línea de comando diseñadas para funcionar en la terminal.
Necesita actualizar su Emacs como otros han sugerido, y ejecutarlo en modo gráfico. Al usar Emacs 24 en Mac OS X, el comportamiento que desea es el predeterminado.
Si quieres hacer esto en una terminal, entonces this truco hará que funcione el portapapeles.
(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)
Usualmente uso Mayús + Insertar para pegar en un búfer de emacs, aunque no sé si tu teclado tiene esas teclas.
Ver http://blog.binchen.org/?p=589
Aquí está el código:
(require ''simpleclip)
(defun copy-to-clipboard ()
(interactive)
(let ((thing (if (region-active-p)
(buffer-substring-no-properties (region-beginning) (region-end))
(thing-at-point ''symbol))))
(simpleclip-set-contents thing)
(message "thing => clipboard!")))
(defun paste-from-clipboard()
"Paste string clipboard"
(interactive)
(insert (simpleclip-get-contents)))
El código usa simpleclip ( https://github.com/rolandwalker/simpleclip )
Simpleclip requiere que instale alguna herramienta de línea de comando en Mac / Linux / Cygwin que. Entonces incluso los emacs sin soporte gráfico también podrían acceder al portapapeles.
Esta solución funciona en cualquier versión de Emacs, cualquier sistema operativo. También funciona cuando su ssh remoto si el servidor habilita X hacia adelante, el comando completo es ssh -X -C -c blowfish-cbc,arcfour [email protected]
)