Como acessar a área de transferência do sistema operacional usando o Emacs + Evil

8

Como posso puxar para / da área de transferência do Windows ao usar:

  • Windows 7 (x64)
  • GNU Emacs 24.4.1 (x64)
  • Evil 1.0.9
  • e tendo (setq x-select-enable-clipboard nil)na minha .emacs? (Eu coloquei essa linha lá porque eu não queria mudanças vim ( x, d, etc.) para espancar o meu SO clipboard.

Eu tentei "+p, "*p, "+y, "*y, CTRL+Ymas ele não funciona. Quando eu corro, :registersele nem mostra +ou *registra.

Para esclarecer: eu quero que o Emacs se comporte como o Vim ao copiar / puxar para / de diferentes registros, sem sobrecarregar a área de transferência com cada comando de alteração de texto. Em particular:

  • yy- NÃO deve puxar o texto para a área de transferência (apenas para 0registrar)
  • "+yy - deve puxar o texto para a área de transferência
  • dd - NÃO deve derrotar a área de transferência
  • cw - shold NOT clobber os clipboard
  • etc.
Kossak
fonte

Respostas:

5

Desativei a integração da área de transferência com:

(setq x-select-enable-clipboard nil)

Então você ainda poderá copiar e colar usando o registro + do mal. Se você ainda deseja integrar-se à área de transferência sem mal, poderá usar esta função para colar:

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

e 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))

Em seguida, vincule copy-to-clipboarda M-we paste-from-clipboardpara C-y, ou outra combinação de teclas de sua escolha.

Edit: Estou executando o Archlinux. Não posso dizer se isso vai funcionar no Windows.

Jesse
fonte
No Linux Mint, (setq x-select-enable-clipboard nil)isso também é suficiente, porque existem +e *registradores para trabalhar com a área de transferência do sistema operacional, não no Windows, infelizmente.
Kossak
Tentei sua função personalizada (no Windows) com plug-in mal e (setq x-select-enable-clipboard nil): O yanking da área de transferência OS funciona como deveria, mas eu não posso arrancar a seleção para área de transferência os (com ligações (define-key evil-normal-state-map (kbd "C-y") 'paste-from-clipboard)e(define-key evil-visual-state-map (kbd "C-y") 'paste-from-clipboard)
Kossak
Não tenho certeza se entendi o que você quer dizer, paste-from-clipboardapenas colará da área de transferência. Você precisará de outra função para copiar para a área de transferência. Eu editei a pergunta para adicionar uma copy-to-clipboardfunção. Por favor, tente se ele funciona
Jesse
Pensei erroneamente que a yankfunção copia de e para a área de transferência (com base na presença de seleção visual). Sua outra função faz o que eu quero, obrigado.
Kossak
2

https://github.com/rolandwalker/simpleclip

cobre TODOS os casos de uso em Mac / Linux / Windows / Cygwin.

Mais especificamente, para copiar e colar, existem apenas dois comandos:

simpleclip-get-contents
simpleclip-set-contents

Sinta-se livre para atribuir teclas de atalho.

Chen Bin
fonte
Isso é maravilhoso, pois simplifica drasticamente a interação com a área de transferência.
loevborg