Guia Completo do tmux: Produtividade no Terminal
1. Introdução ao tmux: O que é e por que usar
O que é o tmux?
O tmux (abreviação de Terminal Multiplexer) é uma ferramenta de terminal que permite dividir, organizar e gerenciar múltiplas sessões de shell em uma única janela. Ele é especialmente útil para quem trabalha frequentemente no terminal, seja em desenvolvimento, administração de sistemas ou tarefas remotas via SSH.
Por que usar o tmux?
Persistência de Sessão:
Desconectou do servidor SSH? Feche o terminal acidentalmente? Não tem problema: o tmux mantém suas sessões ativas, mesmo se sua conexão for interrompida.Divisão de Tela:
Trabalhe em múltiplos painéis dentro da mesma janela do terminal, como diferentes sessões de shell lado a lado.Gerenciamento de Múltiplas Sessões:
Organize projetos ou tarefas diferentes em sessões separadas, navegando entre elas facilmente.Trabalho Colaborativo:
Compartilhe sessões com outros usuários em tempo real, útil para trabalho em equipe ou suporte remoto.Personalização:
O tmux pode ser configurado para atender às suas preferências, com atalhos personalizados, cores e temas.
Quando usar?
- Gerenciamento de servidores: Se você acessa servidores via SSH e quer evitar perder progresso caso a conexão caia.
- Desenvolvimento multitarefa: Ideal para monitorar logs, editar arquivos e rodar comandos simultaneamente.
- Produtividade: Substitui múltiplos terminais ou abas, organizando tudo em uma única janela.
Como funciona na prática?
Com o tmux, você pode:
- Criar uma sessão e dividi-la em painéis (como telas múltiplas em um monitor).
- Alternar rapidamente entre projetos ou tarefas com atalhos simples.
- Persistir o estado do terminal para continuar o trabalho exatamente onde parou.
Exemplo prático:
Imagine que você está editando código em um painel, monitorando logs em outro e rodando comandos em um terceiro — tudo na mesma janela. Mesmo que a conexão caia, você pode voltar e retomar sua sessão instantaneamente.
2. Configuração Inicial: Instalação e Primeiro Uso
Instalando o tmux
A instalação do tmux é simples e varia dependendo do sistema operacional.
Linux (Debian/Ubuntu):
Atualize os pacotes e instale o tmux:
1
2
sudo apt update
sudo apt install tmux -y
Linux (Fedora/CentOS):
1
sudo dnf install tmux -y
macOS (via Homebrew):
Certifique-se de ter o Homebrew instalado, então execute:
1
brew install tmux
Windows (via WSL ou Cygwin):
Se você utiliza WSL (Windows Subsystem for Linux), siga os comandos para Ubuntu ou Fedora, conforme aplicável.
Alternativamente, no Cygwin:
1
setup.exe # Certifique-se de incluir o tmux na instalação de pacotes.
Verificar a instalação:
Após instalar, confirme se o tmux está funcional:
1
tmux -V
Deve retornar algo como: tmux 3.2a.
Primeiros Passos com o tmux
Iniciar uma sessão nova:
Digite:
1
tmux
Você verá o terminal “dentro do tmux”. Uma barra na parte inferior indicará que você está em uma nova sessão.
Saindo do tmux sem fechá-lo:
Use o atalho:
1
Ctrl + B, D
Isso “desanexa” a sessão, permitindo que você retorne mais tarde.
Retomar uma sessão existente:
Liste as sessões ativas:
1
tmux ls
Retorne à sessão pelo nome ou ID:
1
tmux attach -t <nome-ou-ID>
Fechar o tmux:
Dentro de uma sessão, digite exit ou pressione Ctrl + D em cada painel para fechar.
Barra de Status
Na parte inferior da janela do tmux, você verá a barra de status. Ela exibe:
- Nome da sessão.
- Número de janelas/painéis.
- Horário atual.
Essa barra pode ser altamente personalizada, como veremos na seção de personalização.
Dicas Rápidas para Configuração Inicial
- Iniciar diretamente em uma sessão com nome:
Para criar ou anexar uma sessão com um nome específico:1
tmux new -s nome-da-sessaoExemplo:
1
tmux new -s projeto1 - Anexar a uma sessão com nome específico:
Se a sessão já existe, este comando retoma o trabalho:1
tmux attach -t projeto1 - Fechar todas as sessões ativas:
Liste e mate todas as sessões:1
tmux kill-server
3. Comandos Essenciais: Criar, Renomear, Navegar e Fechar Sessões
O tmux oferece comandos e atalhos intuitivos para gerenciar sessões, tornando o terminal mais eficiente. Nesta seção, vamos abordar as operações básicas para criar, renomear, navegar e fechar sessões.
Criar Sessões
- Criar uma sessão nova:
Inicie uma sessão sem nome:1
tmux
O tmux atribuirá um nome padrão, como
0. - Criar uma sessão com nome:
Para nomear a sessão no momento da criação:1
tmux new -s nome-da-sessaoExemplo:
1
tmux new -s projeto1
Listar Sessões
Para ver as sessões ativas, use:
1
tmux ls
Exemplo de saída:
1
2
0: 1 windows (created Sun Nov 17 14:32:10 2024) [80x24]
projeto1: 2 windows (created Sun Nov 17 14:35:42 2024) [80x24]
0eprojeto1são os nomes das sessões.- O número de “windows” (janelas) indica quantas janelas existem em cada sessão.
Anexar e Alternar Sessões
- Anexar a uma sessão existente:
Retorne a uma sessão específica pelo nome ou ID:1
tmux attach -t nome-da-sessaoExemplo:
1
tmux attach -t projeto1 - Alternar entre sessões:
Se você está dentro do tmux e quer alternar:- Pressione:
1
Ctrl + B, S
Isso abre uma lista de sessões ativas. Use as setas para selecionar e pressione
Enter.
- Pressione:
Renomear Sessões
Para renomear a sessão atual:
- Dentro da sessão, pressione:
1
Ctrl + B, $
- Digite o novo nome e pressione
Enter.
Fechar Sessões
- Encerrar a sessão atual:
Dentro da sessão, digite:1
exitOu pressione:
1
Ctrl + D
- Encerrar uma sessão específica:
Fora do tmux:1
tmux kill-session -t nome-da-sessaoExemplo:
1
tmux kill-session -t projeto1 - Encerrar todas as sessões:
Para terminar todas as sessões ativas:1
tmux kill-server
Dicas de Produtividade
- Atalhos rápidos para múltiplas sessões:
- Comece uma sessão com nome e diretamente em um comando:
1
tmux new -s deploy "npm start"
- Comece uma sessão com nome e diretamente em um comando:
Sessões para diferentes contextos:
Use sessões nomeadas para organizar projetos ou tarefas, comodev,logs,backup.- Evite confusão com nomes padrão:
Sempre nomeie suas sessões para facilitar o gerenciamento.
4. Dividindo e Gerenciando Painéis: Uso Básico e Atalhos
Uma das funcionalidades mais poderosas do tmux é a capacidade de dividir a janela em painéis. Isso permite que você visualize e execute múltiplas tarefas lado a lado, tudo na mesma janela do terminal.
Criando Painéis
Os painéis podem ser divididos horizontalmente ou verticalmente:
- Dividir horizontalmente:
Pressione:1
Ctrl + B, "
Isso cria um novo painel na metade inferior da tela.
- Dividir verticalmente:
Pressione:1
Ctrl + B, %
Isso cria um novo painel à direita do atual.
Navegando entre Painéis
Depois de criar múltiplos painéis, você pode alternar entre eles facilmente:
- Alternar automaticamente:
Use as setas direcionais após pressionar:1
Ctrl + B, [Seta Direcional]
- Alternar sequencialmente:
Para ir para o próximo painel, pressione:1
Ctrl + B, O
Redimensionando Painéis
Você pode ajustar o tamanho dos painéis conforme necessário:
- Modo de redimensionamento:
Pressione:1
Ctrl + B, :resize-pane -D
Substitua
-D(diminuir para baixo) por:-U: Aumentar para cima.-L: Aumentar para a esquerda.-R: Aumentar para a direita.
- Atalhos rápidos:
Pressione:1
Ctrl + B, [Seta Direcional com Shift]
(Esta opção pode depender do terminal em uso.)
Fechando Painéis
- Fechar o painel atual:
Dentro do painel, digite:1
exitOu pressione:
1
Ctrl + D
- Fechar todos os painéis:
Basta encerrar a sessão (explicado anteriormente), ou use:1
tmux kill-session
Sincronizar Painéis (Execução Simultânea)
Execute o mesmo comando em todos os painéis ao mesmo tempo:
- Ativar sincronização:
No prompt do tmux (Ctrl + B, :), digite:1
setw synchronize-panes on
- Desativar sincronização:
Para retornar ao comportamento normal:1
setw synchronize-panes off
Dicas de Produtividade com Painéis
- Usos comuns para painéis:
- Monitorar logs e processos: Um painel para
tail -fe outro para comandos. - Testar diferentes comandos lado a lado: Compare saídas sem alternar janelas.
- Monitorar logs e processos: Um painel para
Salvar tempo:
Use a funcionalidade de sincronização para executar atualizações ou comandos em várias instâncias simultaneamente.- Evite confusão:
Trabalhe com no máximo 3-4 painéis por janela para evitar desorganização.
5. Personalização do tmux: Arquivo .tmux.conf e Temas
O tmux é altamente personalizável, e o arquivo de configuração .tmux.conf permite ajustar atalhos, cores, comportamentos e até adicionar temas visuais. Com isso, você pode adaptar o tmux para trabalhar de forma mais eficiente e agradável.
Criando o Arquivo de Configuração
Por padrão, o tmux carrega as configurações do arquivo ~/.tmux.conf. Caso ele não exista, crie-o:
1
touch ~/.tmux.conf
Depois de editar o arquivo, recarregue as configurações sem reiniciar o tmux:
1
tmux source-file ~/.tmux.conf
Configurações Básicas no .tmux.conf
Aqui estão algumas configurações iniciais úteis:
- Remapear a tecla prefixo:
Por padrão, o prefixo do tmux éCtrl + B. Para mudar para algo mais confortável, comoCtrl + A:1 2 3
unbind C-b set-option -g prefix C-a bind C-a send-prefix
- Habilitar o uso do mouse:
Ative a navegação entre janelas e painéis usando o mouse:1
set -g mouse on
- Maior histórico do buffer:
Permite rolar mais linhas no histórico:1
set-option -g history-limit 10000 - Painéis sincronizados por padrão:
Se você frequentemente precisa executar comandos simultâneos em painéis:1
setw -g synchronize-panes on - Melhorias na barra de status:
Personalize a barra de status com cores e informações úteis:1 2 3 4 5
set-option -g status-bg black set-option -g status-fg green set-option -g status-interval 5 set-option -g status-left "Session: #S " set-option -g status-right " %H:%M:%S %d-%b-%y "
Temas para o tmux
Você pode alterar as cores e o estilo do tmux para uma aparência mais moderna. Aqui estão alguns exemplos:
- Adicionar cores aos painéis ativos/inativos:
1 2
set-option -g pane-border-fg black set-option -g pane-active-border-fg green
Instalar temas com o TPM (Tmux Plugin Manager):
O TPM simplifica a instalação de temas e plugins.Instalação do TPM:
1
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Adicione ao seu
~/.tmux.conf:1 2 3 4
set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'jimeh/tmux-themepack' run '~/.tmux/plugins/tpm/tpm'
Instalando temas com o TPM:
Após editar o.tmux.conf, pressione:1
Ctrl + B, I
Isso instala os plugins e temas configurados.
- Usar pacotes de temas prontos:
Explore temas do pacotetmux-themepack:1
set -g @themepack 'powerline/default/cyan'
Dicas de Personalização
- Ajuste para sua rotina:
Configure o tmux para carregar sessões ou janelas específicas automaticamente. Por exemplo:1
if-shell "[[ ! -z $SSH_CONNECTION ]]" "new-session -d -s ssh_session"
Carregue seus scripts:
Automatize tarefas comuns com scripts customizados e vincule-os a atalhos no tmux.- Use fontes compatíveis com powerline:
Se usar temas avançados, instale uma fonte como Fira Code Nerd Font para exibir ícones corretamente.
6. Dicas e Truques: Trabalho em Equipe, Scripts e Integração com Outros Programas
O tmux não é apenas uma ferramenta para sessões persistentes — ele também suporta recursos avançados que podem melhorar o trabalho colaborativo e a automação. Nesta seção, veremos como compartilhar sessões, usar scripts e integrar o tmux com outras ferramentas para produtividade máxima.
1. Trabalho em Equipe: Compartilhando Sessões
O tmux permite que várias pessoas acessem a mesma sessão, ideal para suporte remoto, ensino ou colaboração em tempo real.
Passo a Passo para Compartilhar Sessões:
Certifique-se de que todos os usuários podem acessar o mesmo servidor:
O compartilhamento funciona apenas para usuários logados no mesmo servidor.- Permita acesso ao seu terminal:
Altere as permissões do socket do tmux:1 2
tmux -S /tmp/socket-name chmod 777 /tmp/socket-name
- Outros usuários podem se conectar assim:
Compartilhe o nome do socket:1
tmux -S /tmp/socket-name attach
Sincronizando Comandos nos Painéis:
Ative a sincronização para que todos os painéis recebam o mesmo comando:
1
2
Ctrl + B, :
setw synchronize-panes on
Nota: Use
offpara desativar:
1 setw synchronize-panes off
2. Scripts Automatizados com tmux
Você pode usar scripts para criar e configurar sessões automaticamente.
Exemplo de Script para Projetos:
Crie um arquivo chamado start_project.sh:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
tmux new-session -d -s projeto1
tmux rename-window -t projeto1:0 'Editor'
tmux send-keys -t projeto1:0 'vim' C-m
tmux new-window -t projeto1:1 -n 'Servidor'
tmux send-keys -t projeto1:1 'npm start' C-m
tmux new-window -t projeto1:2 -n 'Logs'
tmux send-keys -t projeto1:2 'tail -f /var/log/app.log' C-m
tmux attach -t projeto1
Torne-o executável:
1
chmod +x start_project.sh
Execute o script:
1
./start_project.sh
Benefícios:
- Configure ambientes completos com um único comando.
- Economize tempo ao alternar entre tarefas frequentes.
3. Integração com Outras Ferramentas
O tmux se integra bem com várias ferramentas e fluxos de trabalho.
Monitoramento de Logs e Processos:
Combine o tmux com ferramentas como htop ou tail para monitoramento contínuo:
1
2
3
4
5
tmux new-session -s monitor -d
tmux send-keys -t monitor:0 'htop' C-m
tmux split-window -h
tmux send-keys 'tail -f /var/log/syslog' C-m
tmux attach -t monitor
Integração com SSH:
Use o tmux para gerenciar múltiplos servidores SSH:
1
2
3
4
5
6
7
8
tmux new-session -d -s servidores
tmux rename-window -t servidores:0 'Servidor A'
tmux send-keys -t servidores:0 'ssh user@servidorA' C-m
tmux new-window -t servidores:1 -n 'Servidor B'
tmux send-keys -t servidores:1 'ssh user@servidorB' C-m
tmux attach -t servidores
Usando tmux com Vim ou Neovim:
A combinação do tmux com editores como Vim ou Neovim permite um ambiente de desenvolvimento poderoso:
- Navegação entre painéis: Combine atalhos do tmux e Vim para alternar facilmente.
- Plugins para integração: Use plugins como
vim-tmux-navigatorpara sincronizar os atalhos de navegação.
4. Dicas de Produtividade
Organização por Sessões e Janelas:
Use sessões diferentes para projetos distintos e janelas para subtarefas.Atalhos personalizados:
Remapeie comandos frequentes para atalhos mais intuitivos no seu.tmux.conf.Automação:
Crie scripts que iniciem seus ambientes de trabalho automaticamente, economizando tempo.Backup de Configurações:
Salve seu arquivo.tmux.confem um repositório ou serviço como GitHub para replicar facilmente sua configuração em outros dispositivos.
7. Tabela de Referência: Atalhos e Comandos Mais Importantes
Aqui está uma tabela prática com os atalhos, comandos e funcionalidades mais úteis do tmux. Use-a como guia rápido no seu dia a dia!
Sessões
| Comando | Descrição | |—————————–|————————————————————————-| | tmux | Cria uma nova sessão sem nome. | | tmux new -s <nome> | Cria uma nova sessão com o nome especificado. | | tmux attach -t <nome> | Anexa-se a uma sessão existente pelo nome. | | tmux ls | Lista todas as sessões ativas. | | tmux kill-session -t <nome> | Encerra uma sessão específica. | | tmux kill-server | Encerra todas as sessões do tmux. |
Janelas
| Comando | Descrição | |—————————–|————————————————————————-| | Ctrl + B, C | Cria uma nova janela na sessão atual. | | Ctrl + B, W | Mostra a lista de janelas e permite alternar entre elas. | | Ctrl + B, N | Vai para a próxima janela. | | Ctrl + B, P | Vai para a janela anterior. | | Ctrl + B, , | Renomeia a janela atual. | | Ctrl + B, & | Fecha a janela atual. |
Painéis
| Comando | Descrição | |—————————–|————————————————————————-| | Ctrl + B, " | Divide o painel horizontalmente. | | Ctrl + B, % | Divide o painel verticalmente. | | Ctrl + B, O | Alterna entre painéis abertos. | | Ctrl + B, [seta direcional] | Move para um painel na direção indicada. | | Ctrl + B, X | Fecha o painel atual. | | Ctrl + B, Z | Maximiza/minimiza o painel atual. |
Barra de Status
| Comando | Descrição | |—————————–|————————————————————————-| | Ctrl + B, : | Abre o prompt de comando do tmux para comandos diretos. | | set -g mouse on | Ativa a navegação com o mouse (via .tmux.conf). | | setw synchronize-panes on | Sincroniza os comandos entre todos os painéis. |
Histórico e Copiar/Colar
| Comando | Descrição | |—————————–|————————————————————————-| | Ctrl + B, [ | Entra no modo de cópia (permite rolar e selecionar texto). | | Ctrl + B, ] | Cola o texto copiado anteriormente. | | Ctrl + B, PgUp | Rola para cima no histórico de saída do terminal. |
Redimensionar Painéis
| Comando | Descrição | |—————————–|————————————————————————-| | Ctrl + B, :resize-pane -D | Diminui o tamanho do painel para baixo. | | Ctrl + B, :resize-pane -U | Aumenta o tamanho do painel para cima. | | Ctrl + B, :resize-pane -L | Diminui o tamanho do painel para a esquerda. | | Ctrl + B, :resize-pane -R | Aumenta o tamanho do painel para a direita. |
Truques Avançados
| Comando | Descrição | |—————————–|————————————————————————-| | Ctrl + B, S | Alterna entre sessões interativamente. | | Ctrl + B, D | Desanexa da sessão atual sem fechá-la. | | tmux source-file ~/.tmux.conf | Recarrega as configurações do arquivo .tmux.conf. | | tmux display-message "texto" | Mostra uma mensagem na barra de status. |
Exemplo de Fluxo
Aqui está um exemplo prático de fluxo usando a tabela acima:
- Crie uma sessão chamada “trabalho”:
1
tmux new -s trabalho - Divida em painéis para multitarefa:
- Use
Ctrl + B, "para criar dois painéis horizontais. - No painel superior, inicie seu editor de texto (por exemplo,
vim). - No painel inferior, rode
tail -f logs.txtpara monitorar logs.
- Use
Adicione uma janela para navegar em arquivos:
UseCtrl + B, Ce execute comandos comolsoufind.Desanexe a sessão para retomá-la depois:
PressioneCtrl + B, D.- Liste sessões ativas e retome o trabalho:
1 2
tmux ls tmux attach -t trabalho
8. Recursos Adicionais: Links e Materiais Recomendados
Para aprofundar seu conhecimento no tmux, aqui está uma coleção de recursos úteis, incluindo documentações, tutoriais, comunidades e ferramentas adicionais. Esses materiais são ideais tanto para iniciantes quanto para usuários avançados.
Documentação Oficial
Documentação do tmux:
A referência oficial mais detalhada, cobrindo todos os comandos e opções:
https://github.com/tmux/tmux/wikiManuais do tmux:
Use o comando abaixo no terminal para acessar a documentação diretamente:1
man tmux
Tutoriais e Blogs
Guia Básico e Avançado do tmux (DigitalOcean):
Um dos tutoriais mais completos, ideal para todos os níveis:
https://www.digitalocean.com/community/tutorials/how-to-use-tmuxAprendendo tmux com Exemplos (Thoughtbot):
Um guia prático com exemplos detalhados de uso:
https://thoughtbot.com/blog/a-tmux-crash-courseGuia Avançado do tmux (FreeCodeCamp):
Focado em fluxos de trabalho avançados e personalização:
https://www.freecodecamp.org/news/tmux-the-terminal-multiplexer/
Vídeos e Cursos
tmux Crash Course (YouTube):
Uma introdução em vídeo que cobre o básico e o intermediário:
https://www.youtube.com/watch?v=BHhA_ZKjyxoMastering tmux (Egghead.io):
Curso focado em maximizar a produtividade com tmux:
https://egghead.io/lessons/bash-mastering-tmux
Plugins e Personalizações
Tmux Plugin Manager (TPM):
Gerencie plugins facilmente e amplie as funcionalidades do tmux:
https://github.com/tmux-plugins/tpmLista de Plugins do tmux:
Encontre temas, melhorias de barra de status e mais:
https://github.com/tmux-pluginsPacote de Temas do tmux:
Adicione temas visuais incríveis ao seu tmux:
https://github.com/jimeh/tmux-themepack
Comunidades e Fóruns
Reddit /r/tmux:
Comunidade dedicada ao tmux, com dicas, truques e ajuda para problemas específicos:
https://www.reddit.com/r/tmux/Stack Overflow:
Resolva dúvidas específicas relacionadas ao tmux:
https://stackoverflow.com/questions/tagged/tmuxGitHub Discussions no Repositório Oficial do tmux:
Para contribuições, perguntas e discussões técnicas:
https://github.com/tmux/tmux/discussions
Complementos para Produtividade
Navegação integrada com Vim/Neovim:
Use o plugin vim-tmux-navigator para alternar entre tmux e Vim com atalhos:
https://github.com/christoomey/vim-tmux-navigatorFontes compatíveis com Powerline:
Para melhorar a aparência da barra de status:
https://github.com/ryanoasis/nerd-fontsAutomatizando Sessões com Tmuxinator:
Gerencie ambientes complexos com este gerenciador de scripts:
https://github.com/tmuxinator/tmuxinator