Cómo anular las combinaciones de teclas para `term`

8

Para algunas tareas como usar ruby pryy tmuxambos eshelly shellno comportarse bien. Traté de usar term, pero mi incapacidad para anular las combinaciones de teclas termhace que su uso sea molesto.

¿Cómo puedo configurar, digamos, M-oas other-windowy M-kas kill-buffercuando lo uso term?

Renan Ranelli
fuente
55
Mis combinaciones de teclas funcionan termpero solo en modo de línea C-c C-j. Solo alterno el modo char C-c C-kcuando sea necesario.
Vamsi
No sabía sobre C-c C-jy C-c C-k! ¡Gracias!
Renan Ranelli

Respuestas:

6

quizás usar en su ansi-termlugar sería un poco menos molesto, ya que expone un C-xprefijo, lo que le permite usar, por ejemplo, C-x oo C-x ksin ningún truco especial.

Si eso no es suficiente, puede utilizar el siguiente enfoque:

(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"))
...
Sigma
fuente
5

En el modo de término, cualquier C-x whatevercombinación de teclas regular se convierte en su C-c whateverlugar. Cortesía de Josh Matthews.

Ahora, para definir las combinaciones de teclas que estarán activas solo en modo de término, intente esto:

(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)))
Nsukami _
fuente
Bien, resuelve mi problema. Estoy aceptando la respuesta de @ Sigma porque es un poco más conveniente de configurar (no es necesario duplicar mis enlaces de mapa global en el término mapa sin procesar). ¡Gracias!
Renan Ranelli
1
term-mode-hookEs muy probable que @LeMeteore realizar estas llamadas no sea útil: terminará reinstalando esas teclas cada vez que se active el modo, en lugar de hacerlo solo una vez.
Sigma
@ Sigma tienes razón. De hecho, estaba tratando de encontrar rápidamente una solución. Su respuesta es de hecho más conveniente.
Nsukami _