2013-03-18 22 views
36

Sto cercando di ottenere un un Ctrl +scheda e Ctrl +spostamento + scheda vincolante per lavorare all'interno di una sessione tmux (Sto anche usando PuTTY).Bind Ctrl + Tab e Ctrl + Shift + Tab in tmux

ho già passato attraverso i dolori di dover ricompilare PuTTY quindi sarebbe inviare ctrl e spostamento correttamente. Dopo aver utilizzato Ctrl +v, e sono in grado di vedere che ^[[27;5;9~ e ^[[27;6;9~ vengono inviati per Ctrl +scheda e Ctrl +spostamento + scheda, rispettivamente. C'è un modo in cui posso ottenere questi vincolati alla finestra successiva e alla finestra precedente all'interno di tmux?

Modifica: Dopo alcune ricerche, penso che potrei dover configurare xterm per includere tali codici. Qualche idea su come farei per farlo?

Edit2: Quindi ho scoperto che posso recuperare infocmp e ricompilarlo. Ho aggiunto

kctab=\E[27;5;9~, kcstab=\E[27;6;9~,

alla fine di esso, solo che adesso mi sta dando un errore. "ingresso non inizia con i nomi dei terminali nella colonna uno"

+0

Istruzioni su come ricompilare PuTTY con il supporto di Ctrl-Tab. http://scnr.net/blog/index.php/archives/61 –

+0

Grazie per la domanda. – CodyChan

risposta

35

recenti versioni “inedite” di tmux riconoscono automaticamente le sequenze di tasti xterm in stile una volta che avete il vostro terminale inviando loro (non c'è bisogno di cambiare il vostro terminfo iscrizione). Anche la prossima versione (1.8?) Dovrebbe avere questo supporto. Con una costruzione appropriata di tmux , tutto quello che dovete fare è legare le chiavi nella configurazione tmux:

bind-key C-Tab next-window 
bind-key C-S-Tab previous-window 

Sarà comunque necessario digitare la chiave di prefisso prima questi tasti.

(Nota: ~/.tmux.conf viene elaborato solo all'avvio del server. Se si apportano modifiche, è necessario uscire da tutte le sessioni e riavviare il server oppure utilizzare (ad esempio) tmux source ~/.tmux.conf affinché il server esistente possa elaborare il file.)

Inoltre, se si desidera tmux a passare lungo queste (e altre) sequenze di tasti xterm stile ai programmi in esecuzione all'interno tmux, allora si avrà bisogno di attivare l'opzione xterm-keys finestra.

set-option -gw xterm-keys on 

(Se si preferisce, è possibile farlo su una base per-finestra utilizzando -w invece di -gw.)


Se si vuole essere in grado di utilizzare quelle chiavi senza digitare il prefisso, quindi è possibile utilizzare attacchi “senza prefisso” invece:

bind-key -n C-Tab next-window 
bind-key -n C-S-Tab previous-window 

Questo più o meno “dedicare” la chiavi a tmux, comunque. Sarà difficile digitare queste chiavi su qualsiasi programma in esecuzione su tmux (ad esempio, dovresti utilizzare il comando tmuxsend-keys C-Tab -come normale, xterm-keys deve essere abilitato per inviare queste sequenze di tasti in stile xterm).


Il problema con il vostro editing voce terminfo è probabilmente perché ogni riga dopo quella che i nomi del tipo di terminale ha bisogno di iniziare con una linguetta. Le righe che non iniziano con una scheda sono l'inizio di una nuova voce di terminale. Tecnicamente, la sequenza TAB NL è fondamentalmente una continuazione di riga in questo formato di file; ogni voce è una singola linea logica.

Inoltre, se si viene ridefinito terminfo, assicurarsi di utilizzare -x con infocmp e tic per preservare le capacità definiti dall'utente (alcuni dei quali sono abbastanza standard).


Vale a dire costruito dal codice recente nel tmux Git repository at sf.net (all'URL clone-able git://git.code.sf.net/p/tmux/tmux-code).

+0

tmux non riconosce C-Tab e CS-Tab come chiavi valide (dice che è una chiave sconosciuta). E grazie per l'heads up, ho ripristinato le mie modifiche al terminfo perché, sinceramente, non sapevo veramente cosa stava facendo. – dook

+0

Oops, C-Tab (e C-S-Tab) sono riconosciuti nella mia build di * tmux *, ma quella funzione non fa parte dell'ultima versione (1.7). Se costruisci una versione recente del codice non ancora rilasciato (ad esempio da git: //git.code.sf.net/p/tmux/tmux-code), allora supporterà queste chiavi. Mi dispiace per la confusione! Aggiornerò il testo della risposta per descrivere questa situazione. –

+0

Oh grazie chris! Ti farò sapere una volta che l'ho ricompilato e installato – dook

Problemi correlati