Cómo acceder al portapapeles del sistema operativo usando Emacs + Evil

8

¿Cómo puedo tirar hacia / desde el portapapeles de Windows cuando uso:

  • Windows 7 (x64)
  • GNU Emacs 24.4.1 (x64)
  • Mal 1.0.9
  • y teniendo (setq x-select-enable-clipboard nil)en mi .emacs? (Pongo esta línea allí porque yo no quería cambios vim ( x, d, etc.) darle una paliza a mi portapapeles del sistema operativo.

Probé "+p, "*p, "+y, "*y, CTRL+Ypero no funciona. Cuando lo ejecuto :registersni siquiera se muestra +ni se *registra.

Para aclarar: quiero que Emacs se comporte como Vim al copiar / extraer a / desde diferentes registros, sin bloquear el portapapeles del sistema operativo con cada comando de cambio de texto. En particular:

  • yy- NO debe tirar el texto al portapapeles del sistema operativo (solo para 0registrarse)
  • "+yy - debería tirar el texto al portapapeles del sistema operativo
  • dd - NO debe golpear el portapapeles
  • cw - NO se debe clobber os portapapeles
  • etc.
Kossak
fuente

Respuestas:

5

Deshabilité la integración del portapapeles con:

(setq x-select-enable-clipboard nil)

Entonces aún deberías poder copiar y pegar usando el + registro del mal. Si aún desea integrarse con el portapapeles sin maldad, puede usar esta función para pegar:

(defun paste-from-clipboard ()
  (interactive)
  (setq x-select-enable-clipboard t)
  (yank)
  (setq x-select-enable-clipboard nil))

y este para copiar:

(defun copy-to-clipboard()
  (interactive)
  (setq x-select-enable-clipboard t)
  (kill-ring-save (region-beginning) (region-end))
  (setq x-select-enable-clipboard nil))

Luego , agréguese copy-to-clipboarda M-wy paste-from-clipboarda C-y, u otra combinación de teclas de su elección.

Editar: estoy ejecutando Archlinux. No puedo decir si esto funcionará en Windows.

Jesse
fuente
Bajo Linux Mint, también (setq x-select-enable-clipboard nil)es suficiente porque hay +y *registros para trabajar con el portapapeles del sistema operativo , desafortunadamente no bajo Windows.
Kossak
Probé su función personalizada (en Windows) con el plugin evil y (setq x-select-enable-clipboard nil): El yanking del portapapeles os funciona como debería, pero no puedo tirar de la selección al portapapeles os (con enlaces (define-key evil-normal-state-map (kbd "C-y") 'paste-from-clipboard)y(define-key evil-visual-state-map (kbd "C-y") 'paste-from-clipboard)
Kossak
No estoy seguro de si entiendo lo que quieres decir, paste-from-clipboardsolo se pegará desde el portapapeles. Necesitará otra función para copiar al portapapeles. Edité la pregunta para agregar una copy-to-clipboardfunción. Por favor, intente si funciona
Jesse
Pensé erróneamente que la yankfunción se copia hacia y desde el portapapeles del sistema operativo (basado en la presencia de selección visual). Su otra función hace lo que quiero, gracias.
Kossak
2

https://github.com/rolandwalker/simpleclip

Cubre TODOS los casos de uso en Mac / Linux / Windows / Cygwin.

Más específicamente, para copiar y pegar, solo hay dos comandos:

simpleclip-get-contents
simpleclip-set-contents

Siéntase libre de asignar teclas cortas.

Chen Bin
fuente
Esto es maravilloso, simplifica drásticamente la interacción con el portapapeles.
loevborg