Tmux possui três níveis de hierarquia quando se trata de organizar visualizações: Sessões, janelas e painéis. Sessões são grupos de janelas e uma janela é um layout de painéis. Janelas e painéis são até certo ponto intercambiáveis, como veremos, mas as sessões são bastante imutáveis. Eu uso sessões para separar espaços de trabalho, quase como os espaços no osx. As janelas e os painéis que utilizo são convenientes.
Recentemente, estive pesquisando alguns dos recursos mais legais do sistema de layout do tmux, e aqui está o que eu vim para me ajudar a trabalhar mais, melhor, mais rápido, mais forte.
Algumas notas: Eu configurei a chave do tmux para ser , mas você pode usar o que quiser. No decorrer deste artigo, usarei para evitar confusão ao descrever os atalhos do tmux. Minha configuração do tmux pode ser encontrada aqui , e existem algumas outras configurações de tema aqui . Quando me refiro a iniciar o console tmux, quero dizer digitar . Nunca se esqueça de que você sempre tem acesso aos seus atalhos atuais digitando .ctrl-g
tmux+[whatever]
tmux-:
tmux-?
sessões
Como tendo a isolar projetos em uma única sessão, permitindo-me ter uma troca de contexto completa quando necessário, costumo chamá-los de projeto no qual estou trabalhando e forçar sua pasta padrão para a pasta do projeto. Você pode alternar entre as sessões usando , renomeá-las usando e definir sua pasta padrão executando dentro da sessão. Este último comando significa que qualquer divisão ou nova janela dentro daquela sessão abre em sua pasta atual, o que é útil para fazer uma divisão para que você possa executar uma tarefa rake ou um console de script para seu projeto rails.tmux-s
tmux-$
tmux set default-folder $(pwd)
Cansei de fazer isso toda vez que alterava o contexto, então escrevi um pequeno script para fazer isso por mim. Super simples, toda vez que eu preciso de uma nova sessão agora eu simplesmente obtenho o console tmux, digito , então para a pasta que preciso e executo para nomeá-la após o projeto e definir os padrões da pasta.tmux-:
:new
cd
tspace
janelas
O Windows no tmux tem um nome e um número de classificação. Eles moram no bar na parte inferior da tela, ordenados por seu número de classificação. Você pode se referir a eles no tmux por nome ou número, o que é bem útil. Por padrão, é renomear janela, é mover janela e permite que você pule suas dez primeiras janelas. Eu costumava pensar que mover janela só permitia definir um novo número de pedido para sua janela, mas desde então aprendi que você pode passar janelas entre sessões com bastante facilidade usando a sintaxe.tmux-,
tmux-.
tmux-[number key]
[session]:[window]
Se eu quiser mover uma janela contendo minha sessão de irc (chamada irssi) da minha sessão atual foo
para a nova sessão de contexto que criei ( bar
), posso chamar o console e digitar ou digitar para obter a mesma coisa e, em seguida, passar o argumento . Por padrão, o tmux aceita sua janela atual como argumento, mas você pode mover uma janela na qual não está atualmente usando os argumentos para especificar o destino e a origem da movimentação.:move-window
tmux-.
bar:irssi
-t -s
Então, tenho feito malabarismos com meu canal de IRC por alguns meses, antes de tropeçar . Se você invocar o console tmux, digite link-window, e você pode compartilhar uma janela entre duas sessões, usando a mesma sintaxe de destino / origem de move. Isso significa que posso ter o mesmo shell ou o mesmo programa compartilhado entre várias sessões. Chega de fazer malabarismos com a janela de irc, posso simplesmente tê-la em qualquer lugar.link-window
painéis
Geralmente, as divisões são o motivo pelo qual as pessoas encontram o tmux em primeiro lugar, já que a versão da tela GNU que o OSX vem com não faz divisões verticais por algum motivo desconhecido. As divisões horizontais são e as verticais são . Você pode girar suas divisões usando , embora eu nunca tenha encontrado um bom uso para isso. Mais úteis são as opções de seleção de layout disponíveis usando opções, permitindo que você selecione uma variedade de layouts. Eu tendo a manter as coisas bem simples com apenas uma ou duas divisões, então não mergulhei muito nisso ainda.tmux-"
tmux-%
tmux-space
tmux-[meta+1-5]
Claro, mover entre os painéis geralmente é , mas na minha configuração de polca eu defini para as teclas vim, naturalmente.tmux-[arrow-key]
Um truque bacana que você pode fazer é abrir uma janela em sua configuração atual como um painel usando . Mais uma vez, usando a sintaxe -t / -s enigmática, você pode fazer algumas coisas úteis com ela. Um exemplo que uso ocasionalmente é puxar a janela que contém o servidor Rails em minha janela de desenvolvimento para que eu possa acessar a sessão para depuração. Para isso, eu usaria (assumindo que seu número seja 1, eu também poderia usar seu nome). Posso até arrancá-lo de outra sessão usando a sintaxe. Quando terminar, e quiser que este painel volte a ser outra janela, você pode usar para transformar o painel novamente em uma janela.join-pane
binding.pry
join-pane -t 1
[session]:[number|pane]
break-pane
pensamentos finais
Como todos os comandos do tmux também estão disponíveis no console, e porque tudo que você digita no console do tmux também está disponível rodando em seu terminal, você pode criar scripts de espaços de trabalho e configurações de divisão. Estou pensando em escrever um script para configurar minhas divisões e janelas para um projeto de trilhos do jeito que eu gosto, e construir talvez um argumento no script tspace para layouts diferentes. Como com todas as suas ferramentas na linha de comando, pense sobre o que você faz constantemente e outra vez, e considere como o script poderia ser uma etapa. Essas ferramentas são poderosas não porque você pode usar o teclado em vez de um mouse, elas são poderosas porque você pode combiná-las de novas maneiras.tmux [command]
Eu também tenho usado wemux , que é um ótimo wrapper em cima do tmux para permitir emparelhamento remoto usando o tmux. É muito bom, e se você gosta de fazer programação em pares no seu escritório, eu recomendo que você dê uma olhada.
Se você tiver alguma dúvida ou dicas incríveis que gostaria de adicionar a este post, entre em contato comigo no Twitter em @evantravers . Informe se isso foi útil e se alguns desses truques ajudam você a se concentrar em seu trabalho enquanto faz coisas incríveis.