O que é tmux?
O tmux é um multiplexador de terminal. No dicionário Michaelis, temos o seguinte significado para o verbo multiplexar:
Combinar várias mensagens em um mesmo meio de transmissão.
Um multiplexador de terminal permite que a gente "rode vários terminais dentro de um mesmo terminal", e isso é muito útil!
Como instalar o tmux?
Para quem usa Linux, ele pode ser facilmente instalado com qualquer gerenciador de pacotes, basta um apt-get install tmux
, yum install tmux
, pacman -S tmux
ou um brew install tmux
no macOS.
Dica: instale o tmux e acompanhe os exemplos!
Como rodar o tmux?
Antes de rodar o tmux, é importante conhecer alguns conceitos fundamentais:
- o tmux pode ter várias sessões;
- cada sessão pode ter várias janelas;
- cada janela pode ter vários painéis;
Como iniciar uma sessão?
Isso pode ser feito através do comando:
tmux new -s sess-01
No caso, estamos conectados na sessão sess-01
e estamos vendo a janela 0:zsh
, ou seja, a janela do índice 0 que tem o nome zsh
. Sabemos isso por causa da barra inferior verde. Também estamos vendo o painel padrão, mas vamos deixar isso para depois!
Caso a gente rode um nodejs, o nome da janela vai mudar para node
:
Como dar um nome fixo para a janela?
Podemos fazer isso digitando um comando, mas é muito útil conhecer alguns atalhos, que são feitos através de combinações de teclas. A combinação para trocar o nome da sessão começa apertando Ctrl + b
, soltando essas teclas e apertando ,
na sequência.
Podemos agora digitar o nome da janela, como janela-01
, e dar um Enter.
A essa combinação, vamos resumi-la como C-b ,
.
Como criar uma nova janela?
Podemos usar a combinação C-b c
de create. No caso, usamos essa combinação quatro vezes para criar quatro novas janelas:
Repare que estamos na janela
4:zsh*
e sabemos isso por causa do asterisco (*) na barra verde!
Como ir para a janela anterior?
Podemos usar a combinação C-b p
de previous:
Como ir para a próxima janela?
Podemos usar a combinação C-b n
de next:
Como ir para a primeira janela, aquela que alteramos o nome?
Podemos usar a combinação C-b 0
, pois 0
é o índice da primeira janela:
Para ir para a janela de índice 2, C-b 2
:
Sempre devemos ficar de olho na barra verde para nos localizarmos dentro do tmux!
Como criar um novo painel?
Caso a gente queira ter dois painéis um do lado do outro, podemos usar a combinação C-b %
, que é um pouco esquisito, mas saiba que é possível customizar as combinações!
Para ir para o painel da esquerda, podemos usar C-b Left
, que é a setinha da esquerda:
Podemos usar as setinhas para navegar entre os painéis! Agora para encerrar o painel em foco, C-d
:
E para criar um painel embaixo do outro, C-b "
:
Como ter uma visão geral das janelas?
Eu gosto muito desse, é o C-b w
de windows:
Podemos usar as setinhas para andar pelas janelas e ver o que está rodando em cada uma!
Como sair do tmux?
Caso a gente queira sair, mas sem fechar nada, podemos usar C-b d
de detach:
Para se reconectar na sessão sess-01
, podemos usar o comando:
tmux a -t sess-01
Ao fazer isso, perceba que o node continuou rodando, pois ao fazer detach ou mudar de sessão/janela, os programas continuam executando normalmente, e isso é muito útil! Se a gente tivesse se conectado a um terminal via ssh e criado uma nova sessão no tmux, o comportamento seria o mesmo! Uma vez que aprendemos tmux, temos tudo isso disponível independente do emulador de terminal, seja remoto ou não. Podemos fechar uma sessão em um terminal e voltar nesta mesma sessão em outro terminal horas depois!
Customizar atalhos
O prefixo C-b
dos atalhos não é tão prático de usar, então a maioria dos usuários muda para C-a
. Podemos fazer isso criando um arquivo ~/.tmux.conf
com o seguinte conteúdo:
unbind C-b
set -g prefix C-a
bind C-a send-prefix
Para que essa configuração tenha efeito, podemos abrir e fechar manualmente todas as sessões ou podemos usar o seguinte comando:
tmux source-file ~/.tmux.conf
Ao fazer isso, o prefixo de todos os comandos passa a ser C-a
. Testando e apresentando um último atalho útil, use C-a ?
para ver todos os atalhos do tmux:
Eu também gosto outras customizações:
-
C-a r
para recarregar as configurações do tmux; -
C-a |
ao invés deC-a %
para criar painéis à direita; -
C-a -
ao invés deC-a "
para criar painéis abaixo; - Começar a indexar as janelas e painéis com 1 ao invés de 0;
O meu arquivo ~/.tmux.conf
ficou assim:
# C-a => Replaces C-b
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# C-b r => Reload config
bind r source-file ~/.tmux.conf
# C-b | => Replaces C-b %
unbind '%'
bind | split-window -h
# C-b - => Replaces C-b "
unbind '"'
bind - split-window -v
# Start windows and panes at 1, not 0
set -g base-index 1
setw -g pane-base-index 1
# Enabling mouse
set -g mouse on
Resumo dos comandos
Dos comandos que vimos até aqui, fica um resumo já considerando o prefixo C-a
e as customizações:
Atalho | Operação | Palavra-chave |
---|---|---|
C-a , | Trocar o nome da janela | - |
C-a $ | Trocar o nome da sessão | $ession |
C-a c | Criar nova janela | create |
C-a p | Ir para a janela anterior | previous |
C-a n | Ir para a próxima janela | next |
C-a w | Visualizar janelas | windows |
C-a d | Sair da sessão | detach |
C-a | | Criar painel à direita | separar horizontalmente (|) |
C-a - | Criar painel abaixo | separar verticalmente (-) |
C-a z | Toggle de zoom em um painel | zoom |
C-a Space | Reorganizar painéis | - |
C-a Up | Right | Down |
Conclusão
Eu gostei muito de ter aprendido tmux porque ele permite organizar diferentes assuntos e diferentes tarefas em diferentes sessões e janelas. Quando eu troco de sessão para ver outro assunto, a antiga sessão permanece configurada e posso voltar da onde parei, mesmo que seja horas depois e mesmo que eu tenha fechado o terminal.
Se um comando vai demorar para executar, crio uma nova janela para continuar trabalhando, depois volto e vejo o resultado, o que acho mais prático do que ficar trocando processos de foreground para background e vice-versa. E isso funciona no meu computador pessoal (Linux), no trabalho (macOS) ou em servidores remotos ao quais me conecto por ssh.
Top comments (0)