Como redefinir o emulador de terminal do tmux?

1

Eu quero "limpar" o painel tmux completamente. Quando eu faço algo como

bind-key C send-keys "clear && tmux clear-history" \; send-keys "Enter" 

sugerido no link , posso limpar o buffer de rolagem e obter uma tela limpa.

No entanto, quando eu faço Shift + PageUp e Shift + PageDown, consigo ver a saída anterior do emulador de terminal em si (não o tmux). Normalmente você pode fazer o comando reset para limpar o histórico de rolagem do emulador de terminal.

É possível reset o emulador de terminal do tmux? Junto com a rolagem acima, claro?

Algumas soluções sugeridas são:

1) Para manter Urxvt.saveLines: 0 ou start Urxvt -sl 0 - Isso é lógico, já que você não precisa do scrollback do Terminal Emulator se estiver no tmux.

2) Desanexe, redefina e reconecte o tmux - Isso parece complicado.

    
por Nishant 06.09.2015 / 14:17

1 resposta

1

O que você quer é printf "3c" > $client_tty , onde $client_tty é o TTY que o cliente tmux está executando. 3c é a sequência de escape para o comando de reinicialização ANSI.

Você pode listar todos os clientes conectados com seus TTYs com tmux list-clients . Limite-o a uma sessão específica com -t $session_name e a saída somente do TTY com -F '#{client_tty}' . Assim, para redefinir todos os clientes tmux conectados, você quer algo como:

for client_tty in $(tmux list-clients -F '#{client_tty}'); do
    printf "3c" > $client_tty
done

Você também vai querer emitir tmux refresh em todos os clientes que você redefiniu para restaurar o tmux ao seu estado usual.

    
por 06.09.2015 / 16:58

Tags