Criando configurações de tmux ativáveis?

24

Encontro-me muitas vezes fazendo a mesma coisa com tmux:

  1. cd para um determinado diretório.
  2. tmux
  3. Renomeie a janela para o que estou fazendo.
  4. Divida a janela verticalmente 50%.
  5. Inicie um processo na janela esquerda.
  6. Inicie outro processo na janela da direita.
  7. Lucro.

Existe uma maneira de automatizar o lançamento de tudo isso para que eu possa executar um único comando e obter a janela que estou procurando?

Naftuli Kay
fonte
Que tal um apelido de shell?
Marco

Respostas:

22

O Archwiki salva o dia! A inicialização da sessão na página tmux fornece um exemplo.

Dito isto, em vez de iniciar o tmux como tmux, nomeará tmux new -s namea sessão quando for iniciada, em vez de fornecer um número.

Inicialização da sessão


Você pode fazer o tmux abrir uma sessão com janelas pré-carregadas, incluindo esses detalhes no seu ~ / .tmux.conf:

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

Para iniciar uma sessão com janelas divididas (vários painéis), inclua o comando splitw abaixo do neww que você deseja dividir; portanto:

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

abriria duas janelas, a segunda com o nome foo / bar e seria dividida verticalmente ao meio (50%) com o foo correndo acima da barra. O foco estaria na janela 2 (foo / bar), painel superior (foo).

Nota: A numeração para sessões, janelas e painéis começa em zero, a menos que você tenha especificado um índice base 1 no seu arquivo .conf

Para gerenciar várias sessões, origine arquivos de sessão separados do seu arquivo conf:

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

A resposta de Rob é ótima e explica exatamente como lidar com sessões no próprio tmux. Agora, se você não se importa em usar uma ferramenta de terceiros, o tmuxinator é um ótimo projeto que ajuda a criar e gerenciar sessões facilmente .

Cada sessão é controlada por um arquivo de configuração que permite definir todas as janelas e painéis, juntamente com seus layouts e comandos padrão para execução dentro deles. Também permite definir um diretório de projeto padrão, soquete específico e daemons que devem estar em execução (por exemplo, mysql). Além disso, ele fornece um método fácil de anexar a eles: basta executar mux [session-name]e ele iniciará a sessão ou anexará a ela, se já estiver em execução. Eu tenho usado por um tempo agora e adoro (obrigado aziz !).

https://github.com/aziz/tmuxinator

JC Yamokoski
fonte