Desvendando o tmux: Domine Atalhos e Configurações

Linux TI

🚀 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 UpC-b DownC-b Left e C-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 e C-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 com swap-pane.
    • C-b { e C-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-LeftC-b C-RightC-b C-Up e C-b C-Down redimensionam em pequenos passos.
    • C-b M-LeftC-b M-RightC-b M-Up e C-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 e tiled, usando atalhos ou comandos específicos.
  • 📋 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 ].
  • 🔍 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.
  • ⚙️ Configuração do tmux:
    • O arquivo de configuração é .tmux.conf no diretório home do usuário.
    • Usa comandos como set e bind-key para personalizar o comportamento e atalhos do tmux.
  • 📋 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-downcursor-upcursor-leftcursor-right: Movem o cursor.
    • end-of-linestart-of-line: Move o cursor para o final/início da linha.
    • search-forwardsearch-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.

Tmux Comandos Básicos

Comando/AtalhoDescrição
tmuxInicia uma nova sessão do tmux.
Ctrl-b + %Divide a janela verticalmente.
Ctrl-b + "Divide a janela horizontalmente.
Ctrl-b + cCria uma nova janela.
Ctrl-b + nAlterna para a próxima janela.
Ctrl-b + pAlterna para a janela anterior.
Ctrl-b + dDesconecta da sessão atual, mantendo-a ativa.
Ctrl-b + zMaximiza a janela atual ou minimiza para estado normal

Tmux Comandos Intermediários

Comando/AtalhoDescrição
tmux new-session -s nomeCria uma nova sessão com um nome específico.
tmux attach -t nomeConecta a uma sessão existente pelo nome.
tmux switch-client -nAlterna 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-sessionsLista todas as sessões tmux ativas.

Tmux Comandos Avançados

Comando/AtalhoDescrição
Ctrl-b + !Move a janela atual para uma nova sessão.
Ctrl-b + xFecha a janela atual.
Ctrl-b + &Fecha a sessão atual.
Ctrl-b + SpaceAlterna entre os layouts de janela.
Ctrl-b + : > setw synchronize-panes onSincroniza a rolagem em painéis divididos.
tmux source-file caminho/do/arquivoExecuta 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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *