Como substituir ligações de teclas por `term`


8

Para algumas tarefas como o uso de Ruby prye tmuxtanto eshelle shellnão se comportam bem. Tentei usar term, mas minha incapacidade de substituir as teclas de atalho termtorna seu uso irritante.

Como posso definir, por exemplo, M-ocomo other-windowe M-kcomo kill-bufferquando se usa term?


5
Minhas combinações de teclas funcionam no termmodo linha, mas apenas C-c C-j. Apenas alterno o modo char C-c C-ksempre que necessário.
Vamsi 26/09

Eu não sabia C-c C-je C-c C-k! Obrigado!
Renan Ranelli 27/09/14

Respostas:


6

talvez o uso ansi-termseja um pouco menos irritante, pois expõe um C-xprefixo, permitindo que você use, digamos, C-x oou C-x ksem nenhum truque especial.

Se isso não for suficiente, você pode usar a seguinte abordagem:

(defun expose-global-binding-in-term (binding)
   (define-key term-raw-map binding 
     (lookup-key (current-global-map) binding)))

(expose-global-binding-in-term (kbd "M-o"))
(expose-global-binding-in-term (kbd "M-k"))
...

5

No modo termo, qualquer C-x whatevercombinação de teclas regular se torna alternativa C-c whatever. Cortesia de Josh Matthews

Agora, para definir combinações de teclas que estarão ativas apenas no modo termo, tente o seguinte:

(add-hook 'term-mode-hook
  (lambda () 
    (define-key term-raw-map (kbd "M-J") 'other-window)
    (define-key term-raw-map (kbd "M-k") 'kill-buffer)))

Bom, resolve meu problema. Estou aceitando a resposta da @ Sigma porque é um pouco mais conveniente de configurar (não é necessário duplicar minhas ligações de mapa global no termo mapa bruto). Obrigado!
Renan Ranelli 27/09/14

1
term-mode-hookÉ muito provável que o @LeMeteore fazer essas chamadas não seja útil: você acabará reinstalando essas teclas sempre que o modo for ativado, em vez de fazê-lo apenas uma vez.
Sigma

@ Sigma você está certo. Na verdade, eu estava tentando encontrar rapidamente uma solução. Sua resposta é realmente mais conveniente.
Nsukami _
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.