2015-12-04 11 views
8

In Emacs, voglio associare una particolare combinazione di tasti a un comando. Tuttavia, poiché sto usando Emacs in modalità terminale all'interno di iTerm2 su OS X, devo tradurre la combinazione di tasti in sequenza di escape dei caratteri e registrare quella sequenza con iTerm2 in modo che riconosca la combinazione di tasti.Trova la sequenza di escape corrispondente per un dato tasto combo

Ma come faccio a trovare la sequenza corrispondente data una combinazione di tasti? Per esempio, ho scoperto che qualcosa di simile ^[[1;8A corrisponde a Ctrl + Alt + fino (dove ho configurato Alt a funzionare come +Esc in iTerm2), ma non ho idea di come combinazione di tasti si traduce in questo sequenza particolare.

C'è un modo per cercare o elaborare la sequenza di escape per ogni combinazione di tasti specificata? Ad esempio, qual è la sequenza per Ctrl + Alt + r?

Una questione collegata, qualcuno può spiegarmi la relazione tra la creazione di una combinazione di tasti con la sua sequenza corrispondente iTerm2 e facendo Emacs traducono una sequenza nella sua rappresentazione chiave interna utilizzando input-decode-map all'interno .emacs (ad esempio (define-key input-decode-map "[escape_sequencehere]" [internal_key_representation_here])? Mi sembra che l'impostazione in iTerm2 sia sufficiente per rendere l'associazione funzionante in Emacs, quindi quando e perché è necessario impostare quest'ultimo in .emacs? (e forse quando abbiamo bisogno di entrambi per far funzionare qualcosa?)

+0

presumo che abbiate già letto la documentazione pertinente come http://www.emacswiki.org/emacs/EmacsForMacOS e http://www.emacswiki.org/emacs/MetaKeyProblems? – jtahlborn

risposta

1

Alcune combinazioni di tasti vengono inviate direttamente all'applicazione in esecuzione in iTerm2. Si può ottenere

  • utilizzando ctrl + v approccio (vedi In bash, how do I bind a function key to a command?) o

    bash-3.2$ ^[[1;10A (in this case I hit ctrl + v before shift+alt+up) 
    
  • sed -n l (notare che è minuscolo L). Per esempio, è possibile vedere ciò che l'applicazione riceve se si inviano (shift + alt + up):

    bash-3.2$ sed -n l 
    ^[[1;10A 
    \033[1;10A$ 
    

Se qualche combinazione di tasti non superare, è possibile istruire iTerm2-let it pass e mapparlo una combinazione di tasti che puoi rilevare come descritto sopra.
Ad esempio, è possibile inviare e mappare ctrl + alt + cmd + R a ESC+sdf e il terminale riceverà ^[sdf che è possibile assegnare a un comando in Emacs.

Problemi correlati