Post

Guia Completo do tmux: Produtividade no Terminal

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

  1. 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-sessao
    

    Exemplo:

    1
    
    tmux new -s projeto1
    
  2. 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
    
  3. 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

  1. Criar uma sessão nova:
    Inicie uma sessão sem nome:
    1
    
    tmux
    

    O tmux atribuirá um nome padrão, como 0.

  2. Criar uma sessão com nome:
    Para nomear a sessão no momento da criação:
    1
    
    tmux new -s nome-da-sessao
    

    Exemplo:

    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]
  • 0 e projeto1 sã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

  1. Anexar a uma sessão existente:
    Retorne a uma sessão específica pelo nome ou ID:
    1
    
    tmux attach -t nome-da-sessao
    

    Exemplo:

    1
    
    tmux attach -t projeto1
    
  2. 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.


Renomear Sessões

Para renomear a sessão atual:

  1. Dentro da sessão, pressione:
    1
    
    Ctrl + B, $
    
  2. Digite o novo nome e pressione Enter.

Fechar Sessões

  1. Encerrar a sessão atual:
    Dentro da sessão, digite:
    1
    
    exit
    

    Ou pressione:

    1
    
    Ctrl + D
    
  2. Encerrar uma sessão específica:
    Fora do tmux:
    1
    
    tmux kill-session -t nome-da-sessao
    

    Exemplo:

    1
    
    tmux kill-session -t projeto1
    
  3. 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"
      
  • Sessões para diferentes contextos:
    Use sessões nomeadas para organizar projetos ou tarefas, como dev, 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:

  1. Dividir horizontalmente:
    Pressione:
    1
    
    Ctrl + B, "
    

    Isso cria um novo painel na metade inferior da tela.

  2. Dividir verticalmente:
    Pressione:
    1
    
    Ctrl + B, %
    

    Isso cria um novo painel à direita do atual.


Depois de criar múltiplos painéis, você pode alternar entre eles facilmente:

  1. Alternar automaticamente:
    Use as setas direcionais após pressionar:
    1
    
    Ctrl + B, [Seta Direcional]
    
  2. 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:

  1. 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.
  2. Atalhos rápidos:
    Pressione:
    1
    
    Ctrl + B, [Seta Direcional com Shift]
    

    (Esta opção pode depender do terminal em uso.)


Fechando Painéis

  1. Fechar o painel atual:
    Dentro do painel, digite:
    1
    
    exit
    

    Ou pressione:

    1
    
    Ctrl + D
    
  2. 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:

  1. Ativar sincronização:
    No prompt do tmux (Ctrl + B, :), digite:
    1
    
    setw synchronize-panes on
    
  2. 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 -f e outro para comandos.
    • Testar diferentes comandos lado a lado: Compare saídas sem alternar janelas.
  • 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:

  1. Remapear a tecla prefixo:
    Por padrão, o prefixo do tmux é Ctrl + B. Para mudar para algo mais confortável, como Ctrl + A:
    1
    2
    3
    
    unbind C-b
    set-option -g prefix C-a
    bind C-a send-prefix
    
  2. Habilitar o uso do mouse:
    Ative a navegação entre janelas e painéis usando o mouse:
    1
    
    set -g mouse on
    
  3. Maior histórico do buffer:
    Permite rolar mais linhas no histórico:
    1
    
    set-option -g history-limit 10000
    
  4. Painéis sincronizados por padrão:
    Se você frequentemente precisa executar comandos simultâneos em painéis:
    1
    
    setw -g synchronize-panes on
    
  5. 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:

  1. Adicionar cores aos painéis ativos/inativos:
    1
    2
    
    set-option -g pane-border-fg black
    set-option -g pane-active-border-fg green
    
  2. 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.

  3. Usar pacotes de temas prontos:
    Explore temas do pacote tmux-themepack:
    1
    
    set -g @themepack 'powerline/default/cyan'
    

Dicas de Personalização

  1. 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"
    
  2. Carregue seus scripts:
    Automatize tarefas comuns com scripts customizados e vincule-os a atalhos no tmux.

  3. 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:
  1. Certifique-se de que todos os usuários podem acessar o mesmo servidor:
    O compartilhamento funciona apenas para usuários logados no mesmo servidor.

  2. 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
    
  3. 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 off para 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-navigator para 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.conf em 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:

  1. Crie uma sessão chamada “trabalho”:
    1
    
    tmux new -s trabalho
    
  2. 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.txt para monitorar logs.
  3. Adicione uma janela para navegar em arquivos:
    Use Ctrl + B, C e execute comandos como ls ou find.

  4. Desanexe a sessão para retomá-la depois:
    Pressione Ctrl + B, D.

  5. Liste sessões ativas e retome o trabalho:
    1
    2
    
    tmux ls
    tmux attach -t trabalho
    

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

  1. Documentação do tmux:
    A referência oficial mais detalhada, cobrindo todos os comandos e opções:
    https://github.com/tmux/tmux/wiki

  2. Manuais do tmux:
    Use o comando abaixo no terminal para acessar a documentação diretamente:

    1
    
    man tmux
    

Tutoriais e Blogs

  1. 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-tmux

  2. Aprendendo tmux com Exemplos (Thoughtbot):
    Um guia prático com exemplos detalhados de uso:
    https://thoughtbot.com/blog/a-tmux-crash-course

  3. Guia 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

  1. 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_ZKjyxo

  2. Mastering tmux (Egghead.io):
    Curso focado em maximizar a produtividade com tmux:
    https://egghead.io/lessons/bash-mastering-tmux


Plugins e Personalizações

  1. Tmux Plugin Manager (TPM):
    Gerencie plugins facilmente e amplie as funcionalidades do tmux:
    https://github.com/tmux-plugins/tpm

  2. Lista de Plugins do tmux:
    Encontre temas, melhorias de barra de status e mais:
    https://github.com/tmux-plugins

  3. Pacote de Temas do tmux:
    Adicione temas visuais incríveis ao seu tmux:
    https://github.com/jimeh/tmux-themepack


Comunidades e Fóruns

  1. Reddit /r/tmux:
    Comunidade dedicada ao tmux, com dicas, truques e ajuda para problemas específicos:
    https://www.reddit.com/r/tmux/

  2. Stack Overflow:
    Resolva dúvidas específicas relacionadas ao tmux:
    https://stackoverflow.com/questions/tagged/tmux

  3. GitHub 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

  1. 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-navigator

  2. Fontes compatíveis com Powerline:
    Para melhorar a aparência da barra de status:
    https://github.com/ryanoasis/nerd-fonts

  3. Automatizando Sessões com Tmuxinator:
    Gerencie ambientes complexos com este gerenciador de scripts:
    https://github.com/tmuxinator/tmuxinator


This post is licensed under CC BY 4.0 by the author.