Come sovrascrivere le combinazioni di tasti per `term`


8

Per alcune attività come usare ruby pryed tmuxentrambi eshelle shellnon comportarsi bene. Ho provato a usare term, ma la mia innabilità di scavalcare le combinazioni di tasti termrende il suo uso fastidioso.

Come posso impostare, dire, M-ocome other-windowe M-kcome kill-bufferquando si usa term?


5
Le mie combinazioni di tasti funzionano in termmodalità linea ma solo C-c C-j. Devo solo attivare la modalità char C-c C-kogni volta che è necessario.
Vamsi,

Non sapevo di C-c C-je C-c C-k! Grazie!
Renan Ranelli,

Risposte:


6

forse usare ansi-terminvece sarebbe leggermente meno fastidioso, poiché espone un C-xprefisso, permettendoti di usare, diciamo, C-x oo C-x ksenza alcun trucco speciale.

Se ciò non è sufficiente, è possibile utilizzare il seguente approccio:

(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

In term-mode, C-x whateverdiventa C-c whateverinvece qualsiasi associazione di tasti normale . Per gentile concessione di Josh Matthews

Ora per definire le combinazioni di tasti che saranno attive solo in modalità termine, prova questo:

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

Bello, risolve il mio problema. Sto accettando la risposta di @ Sigma perché è leggermente più conveniente da configurare (non è necessario duplicare i miei binding di mappa globale nel termine-raw-map). Grazie!
Renan Ranelli,

1
term-mode-hookÈ molto probabile che @LeMeteore inserisca queste chiamate non sia utile: finirai per reinstallare quelle chiavi ogni volta che viene attivata la modalità, invece di farlo solo una volta.
Sigma,

@Sigma hai ragione. In effetti stavo cercando di trovare rapidamente una soluzione. La tua risposta è davvero più conveniente.
Nsukami _
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.