linux - from - Integre Emacs copy/paste con System copy/paste
vi select all and copy (5)
Tengo (cua-mode t) en mi .emacs, por lo que Cc es copiar y Cv es pegar al igual que la mayoría de los otros programas en mi escritorio (Ubuntu, Gnome, Linux). Sin embargo, Emacs no parece compartir el buffer del portapapeles / copia con otros programas.
Por ejemplo, si cc en Firefox puedo hacer un scv para pegar en una terminal o un cv para pegar en gedit. Sin embargo, si hago Cv (o Cy) en emacs, no obtengo lo que copié de Firefox.
¿Hay alguna manera de hacer funcionar esto? ¿Hay algún otro comando que pueda usar para acceder al buffer de copiar y pegar del sistema?
Consulte clipboard-yank
y clipboard-kill-region
en la sección del clipboard del manual.
Esto funciona en mi máquina:
;; CUA OS copypasta even in ncurses mode
(case system-type
(''darwin (unless window-system
(setq interprogram-cut-function
(lambda (text &optional push)
(let* ((process-connection-type nil)
(pbproxy (start-process "pbcopy" "pbcopy" "/usr/bin/pbcopy")))
(process-send-string pbproxy text)
(process-send-eof pbproxy))))))
(''gnu/linux (progn
(setq x-select-enable-clipboard t)
(defun xsel-cut-function (text &optional push)
(with-temp-buffer
(insert text)
(call-process-region (point-min) (point-max) "xsel" nil 0 nil "--clipboard" "--input")))
(defun xsel-paste-function()
(let ((xsel-output (shell-command-to-string "xsel --clipboard --output")))
(unless (string= (car kill-ring) xsel-output)
xsel-output )))
(setq interprogram-cut-function ''xsel-cut-function)
(setq interprogram-paste-function ''xsel-paste-function))))
Tal vez esta página de EmacsWiki sea útil, especialmente la sección donde se mencionan el clipboard-kill-region
, clipboard-kill-ring-save
y clipboard-yank
.
Yo tuve el mismo problema. Agregué esto a mi archivo .emacs:
(setq x-select-enable-clipboard t)
(setq interprogram-paste-function ''x-cut-buffer-or-selection-value)
Ahora Ctrl-C y Ctrl-v entre Emacs y otras aplicaciones funcionan bien. Fuente: Ubuntu Foros
autocutsel
este problema con autocutsel
, que también funciona con emacs
y el resto de mi sistema Ubuntu.
autocutsel - keep the X clipboard and the cutbuffer in sync
Utilizo los siguientes comandos (se ejecutan una vez, generalmente invocados por el mecanismo de "inicio" de mi administrador de ventanas, o ~/.xsession
):
autocutsel -fork
autocutsel -fork -selection PRIMARY
La primera instancia de autocutsel
hace lo siguiente:
autocutsel rastrea los cambios en la selección del portapapeles y del portapapeles del servidor [X11]. Cuando se cambia el portapapeles, actualiza el cutbuffer. Cuando se cambia el buffer de cut, posee la selección del portapapeles. El cutbuffer y la selección del portapapeles siempre están sincronizados.
Sin embargo, generalmente hay un tercer portapapeles, llamado PRIMARY
, que utiliza la segunda instancia de autocutsel
para sincronizar con los otros dos.
Las ventajas de esto son que los tres portapapeles principales están unificados, de modo que pegar la selección actual a través del clic del medio o copiar / pegar al estilo CUA con CTRL-C y CTRL-V, todos trabajan juntos.
El principal inconveniente de este enfoque es que cualquier resaltado automático del texto (como hacer doble clic para resaltar una palabra en emacs, o hacer clic en el icono BlockQuote en un campo de edición de ) borrará su búfer de copia al instante. Para glipper
este problema, utilizo un grabador de historial del portapapeles, como glipper
, que también graba convenientemente todo el contenido del portapapeles y me permite recuperar los contenidos del portapapeles perdidos en tales circunstancias. Puede tomar un poco acostumbrarse y funciona bien para mí. Como alternativa, puede experimentar con la opción -pause
, que espera un cierto período de tiempo antes de tomar la selección, que puede ser lo suficientemente larga para deseleccionar o eliminar cualquier texto seleccionado automáticamente. Sin embargo, no pude obtener resultados que funcionaran lo suficientemente bien para mí.
Tenga en cuenta que esta solución no requiere ninguna configuración especial de emacs
, que uso con el modo cua habilitado.