Executando verificação de segurança...
15

[Tutorial] Como usar o tmux

Isto não é um guia definitivo, apenas a apresentação da ferramenta. Meu objetivo é mostrar alguns conceitos e como utiliza-la.

Você conhece o tmux?

Para quem não conhece, o tmux é um multiplexador de terminal, um nome chique para dizer que você cosegue gerenciar múltiplos terminais em um único terminal. Na prática, é possível ter vários terminais espalhados em janelas e painéis.

Instalando o tmux

O guia abaixo é para o sistema operacional Ubuntu, mas é totalmente possível fazer as devidas alterações para funcionar no seu sistema operacional.

O tmux depende de duas bibliotecas:

  • libevent;
  • ncurses.

Vamos instalar suas dependências.

libevent

Antes de instalar, verifique se a biblioteca já está instalada no seu sistema operacional:

dpkg -l | grep libevent

Se já estiver instalada, podemos pular esta etapa, senão devemos instalar.

Faça o download da ferramenta no site oficial e siga os comandos abaixo:

# Não é necessário se o download já foi feito
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz

tar zxvf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable
./configure
make
sudo make install

Biblioteca libevent instalada.

ncurses

Igualmente à biblioteca libevent, devemos verificar se o ncurses já está instalado:

dpkg -l | grep ncurses

Podemos pular esta etapa se já estiver instalado.

Faça o download da ferramenta no site oficial e siga os comandos abaixo:

# Não é necessário se o download já foi feito
wget https://invisible-island.net/datafiles/release/ncurses.tar.gz

tar zxvf ncurses.tar.gz
cd ncurses-6.3
./configure
make
sudo make install

ncurses instalado!

Instalando, de fato, o tmux

Faça o download da ferramenta no site oficial e siga as instruções abaixo:

# Não é necessário se o download já foi feito
wget https://github.com/tmux/tmux/releases/download/3.4/tmux-3.4.tar.gz

tar zxvf tmux-3.4.tar.gz 
cd tmux-3.4
./configure
make
sudo make install

Outra maneira para instalar

Além dessa maneira, poderíamos simplesmente executar:

sudo apt install tmux

Esse comando já instala suas dependências.

Cores

Talvez, o tmux não exiba as cores corretamente em seu terminal. Por conta disso, crie um arquivo chamado .tmux.conf no seu diretório home e inclua esta linha:

set -s default-terminal 'tmux-256color'

Como o tmux funciona?

Existem vários conceitos em volta da ferramenta: servidor, cliente, sessões, janelas, painéis e muitos outros. Consulte a documentação oficial para conhecer cada componente em detalhes.

Visão geral

Com o terminal aberto execute:

tmux

O comando anterior cria uma sessão onde podemos multiplexar nossos terminais, também, uma janela já é criada e entramos nela automaticamente.

Pressione, Ctrl + b e % (Ctrl e b ao mesmo tempo, solte e depois aperte shift e 5, ao mesmo tempo). Assim criamos um novo painel no sentido horizontal na janela corrente.

Ctrl + b é chamada de tecla de prefixo, e Ctrl + b é a padrão.

Há uma notação para descrever esses comandos a partir do ctrl, veja:
Ao invés de escrever Ctrl + b e %, podemos escrever C-b %.

Agora podemos executar C-b " para criar um painel no sentido vertical.

Agora temos três painéis na nossa janela:

painéis no tmux

Para navegar entre os painéis podemos utilizar as setas direcionais do teclado: C-b Seta correspondente ou C-b q Índice do painel

Ao executar C-b q os índices são exibidos em cada painel:
índices dos painéis

Podemos criar vários outros painéis dentro de uma mesma janela, mas pode ser pouco prático ter muitos painéis em uma só janela, pois queremos dar contexto às janelas: uma janela para os servidores, uma janela para visualizarmos algum arquivo, outra janela para monitorar alguma coisa e por aí vai.

Mais janelas

Podemos criar mais janelas para atender essa necessidade, basta executar C-b c e então uma nova janela será criada. E partir dessa nova janela podemos criar nossos novos painéis.

Redimensionando painéis

Podemos aumentar ou diminuir o tamanho dos paineis: C-b C-Seta direcional ou C-b M-Seta direcional. O prefixo M quer dizer alt. Redimensionar com ctrl altera de 1 em 1 linha/coluna, com alt altera de 5 em 5 colunas/linhas.

Nomeando sessões e painéis

Basta executar C-b $ para renomear a sessão e C-b , para renomear a janela.

Scripts

Suponha que você sempre configura seu ambiente de desenvolvimento no tmux, sobe um servidor e abre a sua IDE. É totalmente possível criar um script para isso, dessa forma, não será mais necessário ter que criar painéis, criar janelas e executar comandos em cada painel. Veja um exemplo de um dos meus shell script:

#!/bin/env bash

cd ~/dev/git/learn-laravel/udemy/learning

# Pane 0
tmux new-session -d -s learn-laravel
tmux rename-window server
tmux send-keys 'php8.2 artisan serve --host=0.0.0.0 --port=8080' C-m

# Pane 1
tmux split-window -h

tmux new-window -n phpstorm
tmux send-keys 'phpstorm.sh .' C-m

tmux select-window -t learn-laravel:0
tmux select-pane -t learn-laravel:0.1

tmux attach-session -t learn-laravel

Para conhecer os mais sobre os comandos do tmux recomendo fortemente consultar a documentação oficial, como já citada anteriormente.

Cheatsheet

Há um gist que contém alguns macetes sobre os comandos do tmux, também recomendo darem uma olhada nele.

Agradecimentos

Agradeço desde já pela atenção.

Ainda não sei tudo sobre o tmux, venho melhorando minha familiaridade com a ferramenta a cada dia. Sem dúvida alguma minha produtividade aumentou após conhecê-la, e por isso eu recomendo ela a quem não conhece.

Quem tiver alguma dica sobre a ferramenta, por favor, compartilhe nos comentários. Ficarei feliz em aprender mais.

3

Uma dica bacana para o TMUX é não usar o Ctrl+b porque voce precisa usar as duas mãos.

Para isso é possivel mudar esse bind key criando um arquivo ~/.tmux.conf e colocando o segunte:

unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

Agora sua bind key é a Ctrl+a ao invez de Ctrl+b, acho que isso ajuda bastante na produtividade. :)

1

Estou aqui a pensar comigo mesmo e acredito que agora com WSL até os users Windows teram privilégio de usar o TMUX. Já usei de facto ele eleva a produtividade em terminais para outro nível.

1

Cara,

Nunca consigo usar este treco kkkkk
Mas me darei ao luxo de executar o tutorial aqui,
Para ver se consigo sair do outro lado kkkkk.

Muito obrigado!