Aumentando a produtividade com TMUX

Se você faz uso pesado do terminal no seu dia a dia, provavelmente o tmux vai ser uma ferramenta que você vai adorar conhecer e utilizar.

Com uma rápida olhada na home do projeto (http://tmux.sourceforge.net) vemos as principais características do tmux:

  • Mudar facilmente entre programas rodando em um mesmo terminal
  • Sair de uma sessão deixando algo rodando em background
  • Voltar para uma sessão aberta

Além disso ele permite que mais de um usuário entre em uma sessão, ou seja, se você utiliza vim para desenvolvimento é possível parear remoto bem mais fácil e rápido. Mas uma coisa de cada vez.

A ferramenta

O tmux é um pacote bem fácil de instalar, basta um brew/apt-get/yum ou qualquer que seja a maneira que o seu OS cuida dos pacotes.

Tmux instalado, é só iniciar a ferramenta rodando “tmux”. A partir dai você estará num terminal com super poderes =]

A primeira vista nada anormal, só um terminal onde você pode utilizar os comandos normais. Vamos então criar uma nova janela: “Ctrl+b c” (‘Control’ e ‘b’ ao mesmo tempo, depois ‘c’)

‘Ctrl+b’ é a tecla lead do tmux, todos os comandos vão iniciar com essa tecla e mais na frente vamos ver como personalizar esse comando.

Screen Shot 2013-07-27 at 6.41.35 PM

Agora, com duas janelas abertas, perceba que abaixo de cada uma tem um número (na imagem: 0 e 1). A maneira como vamos para uma janela específica é usando lead e o número da janela. Isso já é melhor que usar abas no terminal pois podemos ir para uma janela específica sem precisar passar por todas.

Mas isso não é uma vantagem muito boa… agora experimente lead e ‘%’ (shift+5) ou lead e ‘”‘ (aspa dupla) =]

Screen Shot 2013-07-27 at 6.48.21 PM

Numa mesma tela temos várias janelas abertas, o que um terminal comum faz visualmente (ex: iTerm2), mas visualmente é bem mais lento que no teclado certo? E para ir de uma janela para a outra basta usar lead e a seta para o lado da janela que você quer utilizar.

Pra quem faz uso pesado do terminal, poder abrir várias janelas em um lugar só (e de uma maneira tão rápida e fácil) ajuda muito. Dá pra realizar consultas no banco enquanto o código fica aberto do lado, entre outras possibilidades.

Um detalhe é que o scroll do seu mouse não vai funcionar, caso queira fazer um scroll é preciso entrar em outro “modo” usando lead e ‘[‘. A partir daí você pode “andar” pelo histórico do terminal com as setas ou com o scroll. Também é possível configurar esse comportamento, vamos ver mais na frente.

Algumas funcionalidades legais

Já vimos que podemos criar várias janelas, inclusive dentro de outras janelas. Outra funcionalidade do tmux é que ele permite deixar programas rodando em background.

Já vi uma utilização bem legal disso onde uma sessão do tmux continha vários logs abertos para diferentes aplicação e finalidades. Sempre que alguém queria monitorar os requests ou acessos ao banco, bastava fazer um ‘attach’ ou um ‘detach’ para entrar e sair da sessão do tmux que continha todos os logs.

Falando nisso, para sair de uma sessão do tmux basta fazer o ‘detach’ utilizando lead e ‘d’. Com isso você vai voltar ao terminal padrão e as janelas vão continuar abertas em background. Se você sair da janela do terminal com um ‘exit’, a janela vai ser fechada. O tmux só será encerrado quando todas as janelas forem fechadas.

Para logar em uma sessão já aberta fazemos um ‘attach’. Para isso primeiro é legal saber quais sessões estão abertas, rodando ‘tmux ls’. Esse comando traz uma lista de informações das sessões, como data que foi iniciada e um atributo especialmente interessante: o id.

O id da sessão é o primeiro atributo que o ‘tmux ls’ mostra. No exemplo anterior, veríamos o seguinte:

Screen Shot 2013-07-27 at 7.07.43 PM

Com ele podemos fazer ‘tmux attach -t 0’ onde 0 é o id da sessão. A sessão pode ser nomeada de qualquer forma. Basta utilizar o seguinte comando ao iniciar o tmux: ‘tmux new -s marcos_working_from_home’.

Agora quando alguém fizer ‘tmux ls’ vai ver essa sessão e vai poder fazer ‘tmux attach -t marcos_working_from_home’ e logar nessa sessão.

Quando eu falo alguém estou falando de uma outra pessoa que fez um ssh dentro da mesma máquina que eu estou. E essa é uma das melhores funcionalidades do tmux: várias pessoas podem logar na mesma sessão (usando ssh) e todos vão ver o que está acontecendo.

Isso é especialmente bom quando se usa vim como editor de código, permitindo parear remoto praticamente sem interferências ou lentidão. No meu dia a dia isso ajuda bastante, principalmente quando preciso pedir ajuda de alguém que está em um escritório remoto.

Outra vantagem que eu vejo é que quando eu preciso rodar, em outra máquina, um comando que demora muito, posso abrir uma sessão naquela máquina pra rodar o comando. Caso eu perca conexão ou a energia caia, tenho certeza que o comando vai continuar rodando. Depois posso logar na máquina e fazer um attach na minha sessão para ver o progresso.

Customizando seu tmux

O tmux utiliza um arquivo especial (.tmux.conf) que fica na sua home e pode personalizar comandos e teclas. Um bom exemplo é remapear a tecla lead ou modificar o comportamento do scroll para aceitar a rolagem com o mouse.

Não vou entrar muito em detalhes sobre a configuração do tmux, mas é fácil achar exemplos na internet de configuração. A minha configuração, por exemplo, é essa:

#jump to last open window
bind-key 'C-b' last-window
 
#count windows from 1
set -g base-index 1
 
#change status bar
set -g status-left ""
set -g status-right "#[fg=white]#H #(date +'%a, %d %b %Y, %R')"
 
#highlight active window
set-window-option -g window-status-current-bg green
 
#mouse scrolling
set -g mode-mouse on

Espero que com isso você tenha ficado curioso para testar a ferramenta e espero que ela lhe ajude.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s