Creare configurazioni tmux lavabili?


24

Mi ritrovo spesso a fare la stessa cosa con tmux:

  1. cd in una determinata directory.
  2. tmux
  3. Rinomina la finestra con quello che sto facendo.
  4. Dividi la finestra verticalmente del 50%.
  5. Avvia un processo nella finestra di sinistra.
  6. Avvia un altro processo nella finestra a destra.
  7. Profitto.

C'è un modo per automatizzare il lancio di tutto questo in modo da poter eseguire un singolo comando e ottenere la finestra che sto cercando?


Che dire di un alias di shell?
Marco,

Risposte:


22

Archwiki salva la giornata! L'inizializzazione della sessione nella pagina tmux fornisce un esempio.

Detto questo, invece di avviare tmux as tmux, nominerà tmux new -s namela sessione quando inizia invece di darle un numero.

Inizializzazione della sessione


Puoi fare in modo che tmux apra una sessione con finestre precaricate includendo quei dettagli nel tuo ~ / .tmux.conf:

new  -n WindowName Command
neww -n WindowName Command
neww -n WindowName Command

Per avviare una sessione con finestre divise (più riquadri), includere il comando splitw sotto la nuovaw che si desidera dividere; in tal modo:

new  -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1 
selectp -t 0

aprirebbe 2 finestre, la seconda delle quali si chiamerebbe foo / bar e verrebbe divisa in due in verticale (50%) con foo che corre sopra la barra. Il focus sarebbe nella finestra 2 (foo / bar), riquadro superiore (foo).

Nota: la numerazione per sessioni, finestre e riquadri inizia da zero, a meno che non sia stato specificato un indice base di 1 in .conf

Per gestire più sessioni, crea file di sessione separati dal tuo file conf:

# initialize sessions
bind F source-file ~/.tmux/foo
bind B source-file ~/.tmux/bar

6

La risposta di Rob è ottima e spiega esattamente come gestire le sessioni all'interno di tmux stesso. Ora, se non ti dispiace usare uno strumento di terze parti, tmuxinator è un ottimo progetto che aiuta a creare e gestire facilmente le sessioni .

Ogni sessione è controllata da un file di configurazione che consente di definire tutte le finestre e i riquadri insieme ai relativi layout e comandi predefiniti da eseguire al loro interno. Consente inoltre di definire una directory di progetto predefinita, un socket specifico e demoni che devono essere in esecuzione (ad esempio mysql). Per finire, fornisce un metodo semplice per collegarsi anche a loro: semplicemente esegui mux [session-name]e avvierà la sessione o si collegherà ad essa se è già in esecuzione. Lo sto usando da un po 'di tempo e lo adoro (grazie Aziz !).

https://github.com/aziz/tmuxinator

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.