Há um tempo li o post do Gustavo Dutra e achei muito legal a possibilidade de fazer programação em par via terminal remoto. Usando o screen é possível compartilhar facilmente uma sessão do terminal e sair programando. Mas não consegui compartilhar informações de outras sessões abertas. Foi então que conheci o tmux.
Com tmux é possível criar sessões com várias “janelas” (inclusive com separação vertical e horizontal) e usar 256 cores sem problemas.
Seguindo o mesmo esquema do post do Gustavo, separei em “host” e “client”.
Host
Na máquina que servirá como servidor de desenvolvimento será preciso criar uma sessão:
1
|
|
Os parâmetros significam:
- -2 : Aceita 256 cores
- -S : Cria o socket no caminho especificado (no caso, /tmp/pair)
- new-session -s: Cria uma nova sessão com o nome atribuido (no caso, PairProgramming)
Você vai precisar dar permissão no arquivo socket criado:
1
|
|
Feito isso, é só abrir o vim e aguardar o client =)
Client
Para que funcione, o client precisa estar conectado ao host via ssh com um usuário qualquer (o importante é ter acesso ao arquivo socket em /tmp/pair).
Depois de conectado, basta executar o comando:
1
|
|
O parâmetro “attach-session” faz o client se conectar à uma sessão alvo (-t nome-da-sessao)
Comandos básicos do tmux
Para ativar algum comando do tmux, por padrão (é possível mudar)você precisa precionar Ctrl+b
Comandos básicos (assumindo que você esteja no Linux):
- Ctrl+b ? # Lista todos comandos
- Ctrl+b c # Cria nova janela
- Ctrl+b n # Vai para próxima janela
- Ctrl+b % # Divide a janela atual em duas verticais
- Ctrl+b “seta para direita|esquerda” # Move entre as janelas divididas
- Ctrl+b : # Abre o modo comando do tmux
Conclusão
É possível fazer muita coisa com o tmux. Para saber mais, sugiro que siga os links:
- TMUX – The Terminal Multiplexer (Part 1)
- TMUX – The Terminal Multiplexer (Part 2)
- Episode 0.7.3 – Tmux with Brian Hogan and Josh Clayton – The Changelog
- Site do projeto Tmux
- tmuxinator – Uma gem para gerenciar sessões
UPDATE (01/04/2013):
Chris Hunt palestrou na LA Ruby Conf 2013 sobre o Vim e Tmux. Ele faz o que este tutorial apresentou, e muito mais: https://www.youtube.com/watch?v=vHdiXoHKSgU