Por que eu não abro mais um terminal sem o tmux
- #tmux
- #terminal
- #produtividade
- #linux
- #ferramentas
Se você trabalha com desenvolvimento, provavelmente já viveu esta cena: cinco abas de terminal abertas, uma rodando o servidor, outra o banco, outra os testes, e você perdido tentando lembrar qual é qual. Ou pior: estava conectado por SSH em um servidor, no meio de uma migração demorada, e a internet caiu. Processo morto, trabalho perdido.
O tmux resolve os dois problemas, e mais alguns que você nem sabia que tinha.
O que é o tmux
O tmux é um multiplexador de terminal. Em outras palavras, ele permite rodar vários terminais dentro de uma única janela e, principalmente, mantém esses terminais vivos mesmo quando você fecha a janela ou perde a conexão.
Ele se organiza em três níveis:
- Sessões: um conjunto de trabalho. Eu costumo ter uma por projeto.
- Janelas: como abas dentro da sessão.
- Painéis: divisões de uma janela, lado a lado ou empilhadas.
Todos os atalhos começam com um prefixo, que por padrão é Ctrl+b. Você aperta o prefixo, solta, e depois aperta a tecla do comando.
1. Suas sessões sobrevivem a tudo
Esse é o grande motivo para usar o tmux. Quando você fecha o terminal, a sessão continua rodando em segundo plano. Depois é só se reconectar a ela e tudo estará exatamente como você deixou: processos rodando, histórico, painéis no lugar.
tmux new -s api # cria uma sessão chamada "api"
# ... trabalha, e então aperta Ctrl+b d para se desconectar
tmux ls # lista as sessões abertas
tmux attach -t api # volta para a sessão
Em servidores remotos isso faz toda a diferença. Conecte por SSH, abra o tmux e rode aquele deploy, backup ou migração que leva meia hora. Se a conexão cair, o processo continua. Você se conecta de novo, roda tmux attach e acompanha de onde parou.
2. Tudo de um projeto em uma única tela
Em vez de alternar entre abas soltas, você divide a tela em painéis:
Ctrl+b %divide a tela lado a lado.Ctrl+b "divide a tela em cima e embaixo.Ctrl+b+ setas para navegar entre os painéis.Ctrl+b zpara dar zoom em um painel (e de novo para voltar).
Um layout que uso muito: editor ocupando a maior parte da tela, o servidor de desenvolvimento em um painel pequeno à direita e um terminal livre embaixo para rodar git e testes. Tudo visível ao mesmo tempo, sem tirar a mão do teclado.
3. Trocar de projeto em um segundo
Como cada projeto vive na própria sessão, mudar de contexto deixa de ser um sofrimento. Ctrl+b s mostra a lista de sessões e você pula direto para a que quiser. O projeto anterior fica exatamente como estava, com o servidor ainda rodando, esperando você voltar.
Isso muda a forma como você lida com interrupções. Surgiu um bug urgente em outro projeto? Troca de sessão, resolve e volta. Nada foi fechado, nada precisa ser reaberto.
4. Seu ambiente sobe com um comando
O tmux é totalmente scriptável. Dá para montar um script que cria a sessão, abre as janelas e já inicia cada processo no lugar certo:
#!/usr/bin/env bash
SESSION="portfolio"
tmux new-session -d -s "$SESSION" -n editor
tmux send-keys -t "$SESSION:editor" "nvim ." C-m
tmux new-window -t "$SESSION" -n server
tmux send-keys -t "$SESSION:server" "npm run dev" C-m
tmux new-window -t "$SESSION" -n git
tmux attach -t "$SESSION"
Salve como dev.sh, rode, e em um segundo você tem editor, servidor e terminal prontos. Todo dia, do mesmo jeito.
5. É leve e está em todo lugar
O tmux roda em praticamente qualquer Linux, no macOS e no WSL. Consome quase nada de memória e não depende de interface gráfica, então funciona igual no seu notebook e em um servidor sem tela nenhuma. Aprendeu uma vez, usa em qualquer máquina.
6. Copiar e rolar sem mouse
Com Ctrl+b [ você entra no modo de cópia: dá para rolar o histórico de saída, buscar um texto e copiar trechos usando só o teclado. Muito útil para caçar aquele erro que passou voando no log do servidor.
7. Trabalhar junto com outra pessoa
Duas pessoas conectadas no mesmo servidor podem se anexar à mesma sessão e ver a mesma tela em tempo real. É uma forma simples de fazer pair programming ou ajudar alguém a depurar um problema direto na máquina, sem precisar de ferramenta extra de compartilhamento de tela.
Uma configuração para começar
O tmux funciona bem sem nenhuma configuração, mas alguns ajustes no arquivo ~/.tmux.conf deixam tudo mais confortável:
# Ativa o mouse: clicar em painéis, redimensionar e rolar
set -g mouse on
# Janelas e painéis começam em 1, mais fácil de alcançar no teclado
set -g base-index 1
setw -g pane-base-index 1
# Divisões com teclas mais intuitivas, abrindo na pasta atual
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Recarrega a configuração com Ctrl+b r
bind r source-file ~/.tmux.conf \; display "Configuração recarregada"
Muita gente também troca o prefixo para Ctrl+a, que fica mais perto dos dedos. Vale testar e ver o que funciona melhor para você.
Os atalhos que você vai usar todo dia
Não precisa decorar tudo de uma vez. Com estes você já resolve 90% do trabalho:
tmux new -s nome: cria uma sessão.tmux attach -t nome: volta para uma sessão.Ctrl+b d: sai da sessão sem encerrá-la.Ctrl+b c: nova janela.Ctrl+b n/Ctrl+b p: próxima / janela anterior.Ctrl+b %eCtrl+b ": dividem a tela.Ctrl+b z: zoom no painel atual.Ctrl+b s: lista e troca de sessões.
Vale a curva de aprendizado?
Nos primeiros dias, o prefixo vai parecer estranho e você vai esquecer alguns atalhos. É normal. Mas em uma ou duas semanas os comandos viram memória muscular, e voltar para um terminal sem tmux passa a parecer trabalhar com uma mão amarrada.
O ganho não é só velocidade. É tranquilidade: saber que nenhum processo vai morrer porque a conexão caiu, que cada projeto está organizado no seu canto e que o ambiente inteiro sobe com um comando. Para quem passa o dia no terminal, poucas ferramentas dão tanto retorno por tão pouco esforço.
Se você usa o tmux de um jeito diferente ou tem algum atalho favorito que ficou de fora, me manda uma mensagem em joaoandrade.job@outlook.com. Vou gostar de saber.