Tela GNU e Tmux: dicas e truques

8

Então eu sou um grande fã dos multiplexadores como GNU Screen e Tmux , mas mesmo usando o Screen há anos eu ainda reconheço que há muitas coisas lá que eu não conheço (e eu só uso o Tmux por alguns meses, então é pior) .

Quais configurações e dicas e truques que você usa nesses softwares (em ambos ou em cada um deles, não importa)?

Eu uso isso como minha configuração de tela (acho que eu adaptei isso do padrão screenrc do Ubuntu):

shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'

É uma configuração simples para manter a barra de status mostrando com algumas cores, mas tenho certeza de que há mais coisas que eu posso fazer com a tela e o Tmux e adoraria saber disso.

    
por coredump 02.05.2011 / 21:09

4 respostas

4

Isso pode ser um pouco simples para essa multidão, mas achei útil adicioná-la ao final de .profile, para que, quando eu fizer login remotamente via ssh, eu possa ler o MOTD e depois mudar para a tela.

if [ -n "$SSH_TTY" ]
then
        read -p "Press <ENTER> to continue." enterkey
        exec /usr/bin/screen -D -R
fi
    
por 03.05.2011 / 00:43
3

Eu tenho isso no meu .bashrc. Se você não estiver executando a tela, esta função apenas chama ssh como de costume quando executada. Se você estiver executando dentro da tela (e você não alterou o padrão $TERM ), ele primeiro define o nome da janela para o host remoto (junto com quaisquer parâmetros opcionais). É muito útil manter o controle de conexões remotas quando você tem muitas abertas, o que é freqüente em nossa linha de trabalho, eu acho.

function ssh () {
if [ $TERM = "screen-bce" ]
    then
    screen -X title "$*" 
    /usr/bin/ssh $*
else
    /usr/bin/ssh $*
fi
}

Eu também uso bind ^A windowlist -b para facilitar o acesso à lista de janelas (apenas toque em ctrl-A duas vezes).

Suporte fácil a ssh-agent para todas as janelas:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

Então, em qualquer janela, você faz ssh-add apenas uma vez quando inicia uma nova sessão.

Por fim, ao anexar a uma sessão de tela remota de outra sessão de tela, você pode usar screen -x -e ^Vv para definir a sequência de controle como CTRL-V (por exemplo). Isso evita ter que encadear CTRL-As para controlar a sessão remota.

    
por 02.05.2011 / 22:18
0

Você pode considerar byobu , que é essencialmente uma coleção de centenas de dicas, truques, configurações, atalhos de teclado, scripts de status e melhores práticas orientadas em torno de screen e tmux .

    
por 04.04.2012 / 01:57
0

Mesmo tendo começado a usar o tmux para painéis, ainda uso a tela para multiplexar as janelas. O tmux supostamente tem essa funcionalidade, mas trocar painéis de uma janela para outra não é intuitivo para mim, nem dois visualizadores tmux anexados podem estar visualizando janelas diferentes dentro do mesmo daemon (comportamento screen -x), portanto a solução screen-in-tmux. Estas são duas ligações tmux.conf que demoraram mais tempo para descobrir e eu uso todos os dias.

O primeiro, ligar M (ctrl-b shift-M), alterna o tmux entre o seletor de painel de mouse e o realce / cópia do mouse. Você ainda pode copiar / colar no modo de seleção de painel, mas você deve manter o turno (e se você adquirir o hábito disso, copiar / colar em qualquer outro aplicativo tornará você um pouco infeliz, deixe-me dizer). A macro também torna visualmente óbvio qual modo está atualmente selecionado.

bind M set mouse-select-pane \; if '[ "'tmux show -v mouse-select-pane'"= "on" ]' "set status-bg cyan \; set pane-active-border-bg cyan" "set status-bg green \; set pane-active-border-bg default"

O segundo, ligar o C-L (ctrl-b ctrl-l), vai pegar qualquer layout de 4 painéis e transformá-lo no meu layout preferido. Muitas vezes, eu vou encontrar eu ctrl-d em um painel que eu pensei que estava dentro da tela para fechá-lo, mas em vez disso não houve sessão de tela e fechou o painel. Já que meu layout é v-split, h-split, v-split e alguns redimensionamentos, se eu acidentalmente fechava qualquer um exceto a última janela, torna-se uma dor (sem trocadilhos) fechar quaisquer painéis intermediários entre o que eu preciso recriar e o último, recriar e redimensionar os painéis e, finalmente, reconectar as sessões de tela que eu precisei separar ao matar os painéis. Com esta macro, eu posso criar um novo painel, ctrl-b {(o bind padrão para o swap-pane -U) até que ele esteja de volta na ordem correta, então pressione a macro e tudo estará de volta ao normal. Meu layout preferido provavelmente não é o mesmo que o seu, portanto, quando você tiver um layout de que goste, use o comando list-windows para obter uma string de layout como a abaixo.

bind C-L select-layout a18e,155x94,0,0[155x18,0,0,6,155x75,0,19{81x75,0,19,31,73x75,82,19[73x22,82,19,32,73x52,82,42,33]}]

Se isso é muito ingênuo para o seu gosto, sempre há o tmuxinator para o gerenciamento de painéis.

    
por 05.09.2013 / 05:48