associa il prefisso tmux alla chiave cmd di OS X (o qualsiasi altra associazione)


21

Sono abituato a iTerm2 (o Terminal.app per questo caso) su OS X. Ma voglio passare a usare tmux (o schermo, ma il problema è simile ad entrambe le app).

Quindi la mia idea è quella di avere una singola scheda iTerm con una sessione tmux aperta con più schede. Per eseguire la transizione ho una funzionalità di base che devo configurare su tmux: cambia la scheda 'n' usando cmd + n (come Firefox, Chrome, iTerm2 stesso, ecc.)

Tuttavia non riesco a trovare un modo per mappare il tasto cmd sulla tastiera del Mac. Prima ho provato a implementare cmd come chiave prefisso, senza successo. Ho provato a impostare

set-option -g prefix M-a (hoping for Meta-a)

set-option -g prefix ^a (hoping for ^ to work)

ma niente funziona. È possibile? Non ho davvero bisogno di associare il prefisso a cmd, ma voglio poter cambiare le schede di tmux con cmd + n.

Grazie


karabiner-elements ha un'associazione specifica per tmux pqrs.org/osx/karabiner/complex_modifications/#modifier-keys
Fabrizio Bertoglio

Risposte:


8

Vuoi invocare una sequenza di tasti (prima Ctrl-b, poi n che vanno da 0 a 9).

La soluzione migliore è utilizzare un'utilità di scelta rapida da tastiera come Butler o Keyboard Maestro per farlo.


Utilizzando Butler :

Seleziona + »Elemento intelligente» Tasti , configura il tasto di scelta rapida Cmd-1 . Premere Ctrl-B, quindi 1per i tasti . Configuralo per essere valido solo nel Terminale (o iTerm). Ti avvertirà che ad altre applicazioni potrebbe non piacere, ma lo sai già.


Utilizzando Keyboard Maestro :

Crea un nuovo gruppo a sinistra che è disponibile solo in Terminale (o iTerm).

Aggiungi un nuovo elemento, attivato da Hot Key Trigger ( Cmd-1) e aggiungi due sequenze di tasti alle sue azioni: Ctrl-Be 1.


Potresti anche dare un'occhiata a questo argomento - non lo usa Commandperò, e non ha funzionato per me usando Terminal.


Dalla documentazione di tmux :

Associa il tasto chiave al comando. I tasti possono essere specificati con il prefisso 'C-' o 'ˆ' per i tasti ctrl, oppure 'M-' per i tasti alt (meta). Il flag -r indica che questo tasto può essere ripetuto, vedere l'opzione tempo di ripetizione.

Non supportano una terza chiave di modifica.


Oh mio dio! funziona anche! ha usato Keyboard Maestro perché Butler sembra eccessivo. Grazie!
rubenfonseca,

Keyboard Maestro funziona meravigliosamente per questo
Sam Selikoff il

19

In iTerm2, puoi associare scorciatoie a codici esadecimali che vengono inviati al terminale. Vai a Preferenze iTerm2 -> Chiavi. In Tasti di scelta rapida globali, fai clic su + e aggiungi il tipo di collegamento desiderato come cmd + 1, che verrà acquisito. Quindi selezionare "Invia codice esadecimale". Nella casella visualizzata, digita i codici esadecimali che desideri inviare a tmux separati da spazi. Ctrl-B è 0x02, quindi per "Ctrl-B 1", digita "0x02 0x31". Vedi qui per ulteriori codici esadecimali: http://www.nthelp.com/ascii.htm

Ho mappato Cmd con h, j, k, l per spostarsi tra i riquadri tmux e Cmd con% e "per creare le divisioni. Probabilmente farò qualcosa di simile per spostarmi tra le divisioni vim con un tasto di controllo.


Questa è sicuramente la risposta migliore per coloro che usano iTerm2. Grazie!
newUserNameHere

1
Per qualche ragione, questo non funziona sulla mia build iTerm2 3.0.2
jasonszhao,

Se questo non funziona, potrebbe essere perché iTerm2 associa il tasto cmd a switch-tab per impostazione predefinita. Il tuo modificatore potrebbe essere in conflitto. Ho dovuto cambiare il tasto tab swith in opzione per farlo funzionare su CMD + n
Surfrdan

2

Scorciatoie speciali possono essere fatte con Terminal.app. L'ho scoperto l'altro giorno, ma questo potrebbe essere stato possibile prima del leone.

Vai in Preferenze> Impostazioni e fai clic sulla scheda "Tastiera". Ora devi aggiungere una nuova scorciatoia da tastiera facendo clic sull'icona più sotto la casella. Ora vuoi impostare una combinazione di tasti che "Invia la stringa alla shell".

Esempio: supponiamo di voler impostare M-LeftArrow da mappare prefix-p(finestra precedente).

Key: Left Arrow 
Modifier: Option 
Action: send string to shell

Ora basta digitare nella prefix-pcasella di input dove si prefixtrova qualsiasi cosa tu abbia impostato per tmux (io uso cntrl-a in modo che la casella venga visualizzata \001p). Nota che se commetti un errore, verranno inseriti i caratteri eliminati anziché eliminarli effettivamente, quindi premi il pulsante "Elimina un carattere" per spostarti indietro, in caso di errori.

Personaggi speciali che ho impostato per semplificare la vita:

M-Left  > Previous Window
M-Right > Next Window
M-Up    > Enter scrolling mode
M-Down  > Next Pane

Puoi anche modificare cntrl-qualcosa e shift-qualcosa, ma ricorda che potrebbero interferire con il tuo $ EDITOR o altri programmi, quindi fai attenzione a quali funzioni speciali potrebbero diventare inutili.

Inoltre, nota che non sono riuscito a capire come duplicare questa funzionalità in iTerm2.


1

Puoi anche prendere in considerazione l'integrazione nativa (ma molto sperimentale) che iTerm2 offre con tmux: http://code.google.com/p/iterm2/wiki/TmuxIntegration

In questo modo, quando premi Cmd-D per dividere lo schermo iTerm2 dividerà la scheda per te. Questo è fantastico, perché la divisione è nativa, quindi puoi trascinare il bordo nel mezzo per ri-regolare le larghezze, oppure puoi selezionare un riquadro facendo clic. Idem per le nuove schede / finestre (ma le scorciatoie sono leggermente diverse - altrimenti non avresti modo di aggiungere schede non tmux).

E come tmux, se ti stacchi e ricolleghi, tutto sarà salvato per te.

Ci sono due avvertimenti però: * questa è una caratteristica molto sperimentale e molto traballante per me. * dovrai costruirti tu stesso (usando l'archivio da qualche parte sul link sopra).

-Chris


So che sono passati due anni, ma hai idea se questo funziona ancora? Ho seguito le istruzioni sul tuo link, ma cmd+Ddivide i riquadri di iTerm2, non quelli di tmux.
Sam Selikoff,

1
@SamSelikoff Devi iniziare con tmux -CC.
jasonszhao,

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.