Gerador de comando tmux
Monte comandos tmux comuns: nova sessão, anexar, dividir janela, renomear, kill-session, new-window com nome.
tmux em profundidade: sessões, windows, panes e o terminal persistente
O tmux — abreviação de terminal multiplexer — é um programinha pequeno, com licença BSD, escrito por Nicholas Marriott em 2007 como sucessor espiritual do GNU Screen. Ele permite rodar várias sessões, windows e panes dentro de um único emulador de terminal, desanexar de um shell em execução, fechar o notebook, logar de outra máquina e re-anexar exatamente de onde você parou. Para quem vive em sessões SSH a servidores remotos, o tmux é muitas vezes a diferença entre perder um build de 10 horas por causa de Wi-Fi instável e simplesmente continuar como se nada tivesse acontecido.
Este gerador produz exatamente a invocação tmux para as operações mais comuns (new-session, attach, split, rename, kill). Abaixo você encontra uma referência completa do modelo conceitual, dos bindings padrão, configuração via ~/.tmux.conf, ecossistema de plugins (TPM, resurrect, continuum, yank) e comparações com o Screen e o mais novo Zellij.
O modelo de três camadas: sessão, window, pane
- Sessão — o contêiner mais externo, persiste entre detach/attach. Normalmente uma por projeto.
- Window — uma "aba" dentro da sessão. Cada window tem seu próprio layout de panes.
- Pane — uma subdivisão retangular da window rodando um shell independente. Pode haver dezenas por window se o seu terminal for largo o bastante.
As sessões vivem no servidor tmux (um por usuário, iniciado no primeiro comando). Enquanto o servidor tem ao menos uma sessão, ele mantém seus shells vivos mesmo depois de todos os clientes desconectarem. Mate o servidor (tmux kill-server) e tudo morre — não há persistência em disco por padrão.
Comandos CLI essenciais
tmux new -s dev # cria sessão chamada "dev"
tmux ls # lista sessões ativas
tmux a -t dev # anexa à sessão "dev"
tmux a # anexa à sessão mais recente
tmux a -d -t dev # anexa, expulsando outros clientes
tmux kill-session -t dev # destrói uma sessão
tmux kill-server # destrói todas as sessões
tmux rename-session -t old new # renomeia sem desanexar
ssh -t user@host tmux a # SSH direto em um attach de tmux
Bindings padrão (depois da prefix key)
A prefix key padrão é Ctrl-b. Quase todo comando interativo é "prefix, depois tecla". Muitos usuários remapeiam para Ctrl-a (compatível com Screen, mais ergonômico em teclado QWERTY).
c— nova window |n/p— próxima / anterior |,— renomear |0-9— ir para a window N |w— lista interativa.%— split pane vertical |"— split horizontal | setas — navegar entre panes |z— zoom (pane em tela cheia) |x— kill pane |{/}— trocar de lugar.d— desanexa da sessão |$— renomeia sessão |s— seletor interativo de sessões.[— entra no modo de cópia/scroll (saída comq, busca com/) |]— cola o último buffer.?— mostra todos os bindings ativos no momento.
Configuração via ~/.tmux.conf
# remapeia prefix para Ctrl-a (estilo Screen)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# habilita mouse para redimensionar/selecionar/scroll
set -g mouse on
# indexação a partir de 1 (combina com a fileira de números)
set -g base-index 1
setw -g pane-base-index 1
# histórico maior
set -g history-limit 50000
# modo de cópia estilo vi
setw -g mode-keys vi
Recarregue sem reiniciar com tmux source ~/.tmux.conf (ou amarre num atalho).
TPM e os plugins essenciais
O TPM (Tmux Plugin Manager) é o gerenciador de pacotes de facto. Clone-o em ~/.tmux/plugins/tpm, acrescente run '~/.tmux/plugins/tpm/tpm' no fim da config e declare plugins com set -g @plugin '...'.
- tmux-sensible — defaults sãos (UTF-8, escape mais rápido, histórico maior).
- tmux-resurrect — salva e restaura o estado completo da sessão (windows, panes, diretórios, até processos em execução) entre reboots. Prefix +
Ctrl-ssalva, prefix +Ctrl-rrestaura. - tmux-continuum — roda o resurrect automaticamente a cada 15 minutos e no boot do tmux, para você nunca perder trabalho.
- tmux-yank — copia para o clipboard do sistema a partir do modo de cópia (xclip, pbcopy, wl-copy dependendo do SO).
- tmux-pain-control — navegação entre panes no estilo vim com
hjkl.
tmux vs Screen vs Zellij
O GNU Screen (1987) é o multiplexer original — ainda vem instalado em muitas distros, sólido como pedra, mas com uma UI datada e pouca capacidade de scripting. O tmux (2007) introduziu arquitetura cliente-servidor, configuração de verdade, plugins, e hoje é padrão na maioria dos ambientes de dev. O Zellij (2021, em Rust) oferece UI mais descoberta com barra de status mostrando todos os bindings, layouts em arquivos KDL e plugins em WebAssembly — mais amigável, porém menos maduro e com ecossistema menor.
FAQ
O tmux substitui o GNU Screen? Funcionalmente sim — toda funcionalidade do Screen tem equivalente em tmux, que ainda adiciona splits verticais, sessões nomeadas, scripting e ecossistema de plugins muito maior. O Screen continua útil só quando o tmux não está disponível num servidor restrito.
Preciso de root para usar tmux? Não. O tmux é um processo por usuário e guarda seu socket em /tmp/tmux-$UID/. Cada usuário tem o próprio servidor.
Dá para rodar tmux dentro de tmux (nested)? Sim, é comum quando um tmux local conecta a um tmux remoto. A instância de dentro também escuta Ctrl-b, então pressione o prefix duas vezes (Ctrl-b Ctrl-b c) para falar com a sessão interna. Alguns usuários remapeiam o prefix interno para Ctrl-s e evitam o duplo-tap.
Por que o color scheme está estranho? Acrescente set -g default-terminal "tmux-256color" e, para terminais true-color, set -as terminal-features ",xterm-256color:RGB" na sua config. Usuários de Vim/Neovim podem precisar também de termguicolors.
Duas pessoas podem compartilhar a mesma sessão tmux? Sim — os dois clientes anexam à mesma sessão e veem o conteúdo ao vivo. Use tmux new-session -t shared para criar windows independentes em um grupo de sessões compartilhado caso queiram visões diferentes.
Ferramentas Relacionadas
Gerador de comando git rebase
Monte comandos git rebase com branch base, --interactive, --onto, --autosquash e --no-verify, prontos para colar.
Gerador de comando AWS S3
Monta comandos aws s3 (cp, sync, ls, rm) com bucket, caminho, ACL, recursividade, classe de armazenamento e perfil.
Gerador de Comando pg_dump
Monta um comando pg_dump com host, usuário, banco, formato (custom, plain, tar, dir) e arquivo.