Rimappare le chiavi in ​​iterm2


15

Sto cercando di rimappare alcune delle combinazioni di tasti predefinite in iTerm2 e vorrei capire cosa succede quando associo le chiavi a "Invia codici esadecimali".

Un post precedente mi ha aiutato a iniziare a rimappare le combinazioni di tasti ctrl-a e ctrl-e rispettivamente su cmd-sinistra e cmd-destra, ma vorrei rimappare anche altre combinazioni di tasti. ( Link al precedente post StackOverflow ).

Ho una vaga comprensione che ci sono codici esadecimali coinvolti, ma sono in un punto in cui non riesco a capire dove andare dopo per capire cosa sta succedendo o cosa fare.


Non ha nulla a che fare con Bash. Tag rimosso.

Risposte:


16

Quei codici esadecimali sono solo sequenze di byte. Ad esempio, mappando una combinazione di tasti per 0x66 0x6f 0x6ffarla inserire foo. 0xc3 0xa4inserire ä se si utilizza UTF-8. 0x1b 0x1b 0x5b 0x43significa escape escape [ C.

Alcune sequenze di byte come le sequenze di escape ANSI e persino singoli byte come i caratteri di controllo ASCII hanno significati speciali nei terminali.

Per fare in modo che ⌘ ← e ⌘ → vadano all'inizio e alla fine della riga, puoi assegnarli a 0x01 (^ A in notazione caret) e 0x05 (^ E in notazione caret):

  • ⌘ ←: invia codici esadecimali: 0x01
  • ⌘ →: invia codici esadecimali: 0x05

Puoi fare in modo che ⌥⌦ elimini una parola in avanti assegnandola a \ed:

  • ⌥⌦: Invia ^ [d

Cambiare ⌥ ← e ⌥ → in \ebe \efnelle preferenze di iTerm li cambierebbe anche in programmi che non supportano i tasti di lettura in stile readline o emacs. Un'altra opzione è quella di aggiungere questo a ~ / .inputrc :

"\e\e[D": backward-word
"\e\e[C": forward-word

Puoi eseguire reade premere combinazioni di tasti per vedere quali caratteri inseriscono. Ad esempio, ⌥ ← inserisce ^[^[[Dper impostazione predefinita, dove si ^[trova escape nella notazione caret .

Vedi anche http://code.google.com/p/iterm2/wiki/Keybindings .


Grazie. Mi imbatto in questa risposta quando cerco una soluzione per la mia domanda qui . Come posso cercare il codice esadecimale per una specifica combinazione di tasti? (nel mio caso Sono interessato nelle combinazioni Ctrl+Alt+<char>con <char>essendo i, j, k, le u)
Amelio Vazquez-Reina

6

Suggerirei di installare Key Codes ($ 0) di Many Tricks e scoprire le scorciatoie per te.

Ad esempio, se si desidera rimappare la scorciatoia predefinita per (inoltrare) l'eliminazione di un carattere - che è Ctrl-D ( ⌃D) - per essere semplice come premere il tasto di eliminazione in avanti ( ), si ...

  1. Apri l'app e premi Ctrl-D

    Esempio di codici chiave

  2. Di nuovo in iTerm 2, aggiungi il collegamento Unicode in iTerm> Preferenze> Chiavi

    iTerm invia codici esadecimali

Nota: non copiarlo e incollarlo, basta digitare Unicode senza spazi.


2

Il modo migliore che ho trovato è stato con l'invio di codici chiave (come descritto da @pattulus o l'utilizzo di associazioni di tasti vim.

Nota sui codici chiave: in realtà non è possibile farlo funzionare inviando la stringa unicode come descritto sopra, è necessario inviare sia il modificatore che la chiave per ottenere in caso di Control+ Dè necessario inviarlo come codice: 0x840101 0x4dov'è 0x840101il modificatore della chiave di controllo e può essere ottenuto tramite il codice chiave .

Nota sull'invio come sequenza VIM: come descritto nella documentazione iTerm2 , è possibile inviare un codice chiave nel formato di associazione VIM come \<C-d>per l'invio di Control+ D(nota che \è importante).

Personalmente preferisco l'associazione dei tasti vim perché è più leggibile e in seguito capirai cosa hai fatto.


1

Dai un'occhiata a Karabiner .

All'interno di questo strumento è possibile creare mappature personalizzate chiave specifiche per le applicazioni. Viene fornito con alcuni strumenti per aiutarlo.

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.