🚀 Sobre o tmux
- tmux é um programa que roda em um terminal e permite executar vários outros programas de terminal dentro dele.
- Cada programa dentro do tmux tem seu próprio terminal gerenciado por tmux, permitindo o acesso a partir de um único terminal onde o tmux está em execução.
- O tmux funciona como um multiplexador de terminal, possibilitando a execução de programas em segundo plano e posterior reconexão.
- Pode rodar programas interativos, shells, ou qualquer programa de terminal Unix.
- Oferece recursos poderosos para acessar, gerenciar e organizar programas dentro do tmux, interativamente e por meio de scripts.
📊 Conceitos Básicos
- Servidor e Clientes do tmux:
- O tmux mantém seu estado em um único processo principal chamado servidor.
- Os usuários se conectam ao servidor iniciando um cliente em um terminal externo.
- Sessões, Janelas e Panos:
- Tudo dentro do tmux pertence a um pano, que é uma área retangular que mostra o conteúdo do terminal.
- Cada pano está em uma janela, que pode ter vários panos e é parte de uma sessão.
- Múltiplas janelas são agrupadas em sessões.
- 🖱️ Seleção de Janela:
C-b 0
muda para a janela 0,C-b 1
para a janela 1, atéC-b 9
para a janela 9.C-b '
solicita um índice de janela e muda para essa janela.C-b n
muda para a próxima janela na lista por número.C-b p
muda para a janela anterior na lista por número.C-b l
muda para a última janela, que era a janela ativa antes da atual.
- 🔄 Seleção de Painel Ativo:
C-b Up
,C-b Down
,C-b Left
eC-b Right
mudam para o painel acima, abaixo, à esquerda ou à direita do painel ativo.C-b q
exibe números de painéis e seus tamanhos; pressionar um número muda para o painel correspondente.C-b o
move para o próximo painel por número eC-b C-o
troca esse painel com o painel ativo.
- 🌳 Modo Árvore:
C-b s
inicia o modo árvore mostrando apenas sessões.C-b w
inicia com sessões expandidas, mostrando janelas; navegável com teclas de seta e outras ações.- Modo árvore divide a janela em duas seções, mostrando sessões, janelas e painéis na metade superior e uma visualização do cursor nas panes na metade inferior.
- 🚀 Modo de Cliente:
C-b D
exibe uma lista de clientes, permitindo destaque, desconexão e outras ações.
- 🗑️ Finalizando Sessão, Janela ou Painel:
C-b &
confirma e fecha a janela atual; todas as panes são fechadas.C-b x
fecha apenas o painel ativo.kill-session
encerra a sessão anexada e suas janelas.
- 🔄 Troca e Movimentação:
C-b m
marca/desmarca o painel ativo para facilitar a troca comswap-pane
.C-b {
eC-b }
trocam painéis acima ou abaixo.C-b .
move a janela para um novo índice.
- 🖼️ Redimensionamento e Zoom de Panéis:
C-b C-Left
,C-b C-Right
,C-b C-Up
eC-b C-Down
redimensionam em pequenos passos.C-b M-Left
,C-b M-Right
,C-b M-Up
eC-b M-Down
redimensionam em passos maiores.C-b z
faz um painel ocupar a janela inteira; pressionar novamente restaura o layout original.
- 🔄 Layouts de Janela:
- Pode-se escolher layouts, como
even-horizontal
etiled
, usando atalhos ou comandos específicos.
- Pode-se escolher layouts, como
- 📋 Cópia e Colagem:
- Copy mode (
C-b [
) permite copiar texto usando atalhos semelhantes ao emacs(1) ou vi(1). - Texto copiado pode ser colado no painel ativo com
C-b ]
.
- Copy mode (
- 🔍 Busca de Janelas e Panéis:
C-b f
inicia o modo árvore com filtro para mostrar apenas painéis que contenham o texto especificado na visualização ou no título.
- 🖱️ Suporte ao Mouse:
- Habilitado com a opção
mouse
. - Diversas ações, como mudar de painel, redimensionar panéis, copiar texto e escolher itens de menus, são suportadas.
- Habilitado com a opção
- ⚙️ Configuração do tmux:
- O arquivo de configuração é
.tmux.conf
no diretório home do usuário. - Usa comandos como
set
ebind-key
para personalizar o comportamento e atalhos do tmux.
- O arquivo de configuração é
- 📋 Configurando Atalhos no Modo de Cópia:
bind-key
: Substitui atalhos existentes no modo de cópia.unbind-key
: Remove completamente um atalho no modo de cópia.
- 🖱️ Atalhos no Modo de Cópia:
begin-selection
: Inicia a seleção.cancel
: Sai do modo de cópia.copy-pipe
: Copia e direciona para o comando especificado.cursor-down
,cursor-up
,cursor-left
,cursor-right
: Movem o cursor.end-of-line
,start-of-line
: Move o cursor para o final/início da linha.search-forward
,search-backward
: Busca termos para frente/para trás.
- ⚙️ Tipos de Opção:
Server options
: Afetam todo o servidor.Session options
: Afetam uma ou todas as sessões.Window options
: Afetam uma ou todas as janelas.Pane options
: Afetam uma ou todas as divisões.User options
: Reservadas para o usuário.
- 🎨 Mostrando Opções:
show-options
: Exibe opções usando diferentes flags para opções globais, de sessão ou de janela.
- 🔄 Alterando Opções:
set-option
: Define opções.unset-option -g
: Remove uma opção global.
- 🎉 Formatos:
- Usados para configurar a aparência do texto, como o status-right.
- 🕹️ Comandos Embutidos:
- Alguns podem conter comandos de shell.
- Útil para personalizar a linha de status, por exemplo, mostrando a carga do sistema.
- 🌈 Cores e Estilos:
tmux
permite configurar cores e estilos usando uma sintaxe simples.
- 📜 Lista de Opções Úteis:
- Apresenta algumas opções comuns para servidor, sessão, janela e estilo.
- 🛠️ Mudanças de Configuração Comuns:
- Exemplos de alterações comuns no arquivo
.tmux.conf
. - Mudança do prefixo, personalização da linha de status e configuração da borda da divisão.
- Exemplos de alterações comuns no arquivo
Tmux Comandos Básicos
Comando/Atalho | Descrição |
---|---|
tmux | Inicia uma nova sessão do tmux. |
Ctrl-b + % | Divide a janela verticalmente. |
Ctrl-b + " | Divide a janela horizontalmente. |
Ctrl-b + c | Cria uma nova janela. |
Ctrl-b + n | Alterna para a próxima janela. |
Ctrl-b + p | Alterna para a janela anterior. |
Ctrl-b + d | Desconecta da sessão atual, mantendo-a ativa. |
Ctrl-b + z | Maximiza a janela atual ou minimiza para estado normal |
Tmux Comandos Intermediários
Comando/Atalho | Descrição |
---|---|
tmux new-session -s nome | Cria uma nova sessão com um nome específico. |
tmux attach -t nome | Conecta a uma sessão existente pelo nome. |
tmux switch-client -n | Alterna para o próximo cliente conectado. |
Ctrl-b + [ | Entra no modo de rolagem na janela atual. |
Ctrl-b + : | Abre o prompt de comando. |
tmux list-sessions | Lista todas as sessões tmux ativas. |
Tmux Comandos Avançados
Comando/Atalho | Descrição |
---|---|
Ctrl-b + ! | Move a janela atual para uma nova sessão. |
Ctrl-b + x | Fecha a janela atual. |
Ctrl-b + & | Fecha a sessão atual. |
Ctrl-b + Space | Alterna entre os layouts de janela. |
Ctrl-b + : > setw synchronize-panes on | Sincroniza a rolagem em painéis divididos. |
tmux source-file caminho/do/arquivo | Executa comandos tmux a partir de um arquivo. |
Perguntas e Respostas
- 🖥️ TERM dentro do tmux: Deve ser “screen”, “tmux” ou similar (como “tmux-256color”).
- 🖥️ TERM fora do tmux: Deve corresponder ao terminal, especialmente “rxvt” para rxvt e derivados.
- 🐞 Relatando bug no tmux: Verifique a última versão no Git, envie relatórios para [email protected] ou [email protected], ou abra um problema no GitHub.
- 🚀 Solicitar novos recursos no tmux: Envie solicitações por e-mail para [email protected] ou abra um problema no GitHub.
- 🔄 Lançamentos do tmux: Aproximadamente a cada seis meses, versões principais têm um dígito após o ponto, como 2.9 ou 3.0; lançamentos de correção têm uma letra, como 2.9a; árvore de origem tem “next-“; candidatos a lançamento têm “-rc”.
- 📄 Por que usar a descrição de terminal “screen” no tmux: Já está amplamente disponível, mas tmux e tmux-256color podem ser usados também.
- 🛠️ tmux saiu inesperadamente: Indica que o servidor tmux falhou; relatar problemas e considerar ativar dumps de núcleo.
- 🚫 tmux diz sem sessões ao anexar: Verificar se tmux ainda está em execução com pgrep ou ps; se não, a sessão pode ter sido encerrada.
- 🌈 Sem cor no terminal: Use um valor para TERM que suporte cor, como xterm-color.
- ⚠️ tmux congela meu terminal: Desative a opção set-titles em .tmux.conf; se o problema persistir, envie um relatório de bug.
- 🔍 Por que C-b é a tecla de prefixo: Originalmente desenvolvido dentro do screen, C-b foi escolhido para evitar conflitos.
- 🌐 Como usar UTF-8: Requer suporte UTF-8 no sistema; tmux tentará detectar, ou use -u para especificar explicitamente.
- 🔵 Como usar um terminal de 256 cores: Configure default-terminal em ~/.tmux.conf ou use tmux -2.
- 🎨 Como usar cores RGB: Especifique em hexadecimal no tmux 3.2+ ou use terminal-features ou terminal-overrides.
- ➖ Por que os separadores de painel são tracejados: Alguns terminais ou fontes não lidam bem com caracteres UTF-8 de desenho de linha; use U8 para forçar ACS.
- 🖱️ Usar mouse para selecionar painéis: Não é possível configurar tmux para tratar alguns eventos de mouse e deixar o terminal tratar outros.
- 🛠️ Como traduzir opções -fg, -bg e -attr para -style: Use a sintaxe de estilo desde tmux 1.9.
- ⏰ O que é a opção escape-time: Resolve a ambiguidade entre teclas especiais e a tecla Escape; valor zero pode ser adequado em redes rápidas.
- 🎹 Teclas de função e setas modificadas não funcionam dentro do tmux: Configure default-terminal para tmux-256color em .tmux.conf.
- 🔄 Como escapar caracteres com #(comando): Use \ para escapar caracteres na string de comando.
- 🔄 Como tornar .tmux.conf portátil entre versões: Use -q para suprimir avisos sobre opções desconhecidas e verifique a versão do servidor com if-shell ou %if.
- 🏭 tmux consome muita CPU: Desative a renomeação automática de janelas com setw -g automatic-rename off.
- 📊 Como exibir a carga média: Não é possível obter a carga média de forma portátil; use comandos como
uptime|awk ...
. - 🔄 Como anexar a mesma sessão a vários clientes com janela atual diferente: Use link-window ou new-session -t para vincular manualmente ou criar uma sessão agrupada.
- 👀 Não vejo itálicos! Ou itálicos e inversão estão invertidos: Configure default-terminal para “tmux” para habilitar itálicos.
- 🛠️ Como ver a configuração padrão: Inicie um novo servidor tmux sem arquivo de configuração para mostrar opções de sessão ou janela padrão.
- 📋 Como copiar uma seleção do tmux para a área de transferência do sistema: Consulte a documentação específica.
- 🕵️ Pontos ao redor de uma sessão quando me conecto: Até a versão 2.9, os pontos indicam o tamanho máximo da janela; a partir do 2.9, use window-size option para usar o cliente conectado maior.
- 🔑 Como usar ssh-agent(1) com tmux: Configuração pode ser complicada; é mais confiável configurar ssh-agent no perfil do shell.
- 🔀 O que é a sequência de escape passthrough e como usá-la: Força tmux a passar uma sequência de escape usando uma sequência especial DCS; use com cuidado, pois tmux não está ciente das alterações feitas pela sequência de escape.
- 🔄 Como tornar .tmux.conf portátil entre versões: Use -q para suprimir avisos sobre opções desconhecidas e verifique a versão do servidor com if-shell ou %if.
- 🏭 tmux consome muita CPU: Desative a renomeação automática de janelas com setw -g automatic-rename off.
- 📊 Como exibir a carga média: Não é possível obter a carga média de forma portátil; use comandos como
uptime|awk ...
. - 🔄 Como anexar a mesma sessão a vários clientes com janela atual diferente: Use link-window ou new-session -t para vincular manualmente ou criar uma sessão agrupada.
- 👀 Não vejo itálicos! Ou itálicos e inversão estão invertidos: Configure default-terminal para “tmux” para habilitar itálicos.
- 🛠️ Como ver a configuração padrão: Inicie um novo servidor tmux sem arquivo de configuração para mostrar opções de sessão ou janela padrão.
- 📋 Como copiar uma seleção do tmux para a área de transferência do sistema: Consulte a documentação específica.
- 🕵️ Pontos ao redor de uma sessão quando me conecto: Até a versão 2.9
Referências
- https://github.com/tmux/tmux/wiki/Getting-Started