Forçar a tela GNU a refletir a largura atual do terminal ao reconectar?


32

Eu gostaria de forçar a tela do GNU a refletir a largura do terminal existente quando eu reconectar uma sessão. Parece-me que funcionou corretamente antes de atualizar uma máquina para o CentOS 6, mas não consigo descobrir como restaurá-la. ( TERM=xterm)

Sempre que eu reconecto uma sessão, independentemente do estado em que a desanexei, ela é lançada em 80 colunas, redimensionando meu terminal (PuTTY, neste caso) junto com ela.

Estou iniciando e recolocando com:

screen -aA -R <session>

Meu .screenrc contém apenas o seguinte e algumas associações de teclas irrelevantes:

term xterm

defscrollback 10000

# status line at the bottom
hardstatus on
hardstatus alwayslastline
hardstatus string "${-}%{.0c}%-w%{.y0}%f%n %t%{-}%+w %=%{..G}[%H] %{..Y} %D %M %d, %Y %c | Load: %l"
caption splitonly "%{.yK}%3n t"
caption string "%{.c0}%3n %t"

vbell off

# Fix fullscreen programs
altscreen on

Você pode ter mais sorte tmux, eu posso redimensionar dinamicamente minha janela do Terminal e o tmux dentro seguirá.
Number5

Respostas:


38

depois de reconectar, ctrl-a Fo comando "fit" é redimensionado para redimensionar a janela atual. se você reconectar usando a -Aopção, ele deverá redimensionar todas as janelas ao reconectar. Ainda há outras pessoas conectadas à sessão da tela quando você está anexando? Por exemplo, você está tendo que usar -x para reconectar em vez de -r? você pode desanexar outras pessoas quando reconectar com "screen -D -r" em vez de "screen -x", e eu espero que isso reajuste automaticamente as janelas.


Estou iniciando com -a -A, e ninguém mais está conectado.
13743 Michael

1
Este ainda é um problema com a tela via Ubuntu 14.04. Fit não funciona. Desconectar e reconectar faz. A tela 4.2.1 está disponível em backports confiáveis . Consulte a documentação de backports do usuário para obter informações sobre como habilitar e usar pacotes do repositório de backports.
Greg Sino

1
Mesmo depois de fazer isso, tive que redimensionar minha janela do terminal para enviar qualquer sinal screennecessário para realmente fazer o redimensionamento.
krs013

Esses arquivos não funcionaram para mim, talvez porque eu esteja usando um terminal diferente (iTerm2 no Mac). O Fit não funcionou, então eu desanexei e reconecte usando screen -D -re até tentei redimensionar a janela, mas ela permaneceu a mesma. No Vim, posso ver que columnsfoi definido como 204.
haridsv

-D tela -r funcionou para mim depois de tentar todas as outras opções, como você disse Stew - minha tela ainda estava aparecendo como anexado quando eu corri -ls tela
Hayden Crocker

8

Observe que esta resposta se aplica apenas ao PuTTY. Eu também sou forçado a usar um sistema operacional que preferiria, e o PuTTY é a única opção real devido a outras restrições no sistema. Eu estava tendo o mesmo problema, minha tela seria redimensionada ao iniciar ou conectar-se a uma sessão de tela existente. Tentei as respostas aqui sem sucesso (Windows 10 com o PuTTY 0.67 instalado via MSI). Essas respostas podem ter funcionado com um terminal UN * X padrão, mas não com o PuTTY, é um animal diferente.

Eu fui pesquisar nas opções e eis que, em "Terminal -> Recursos", há uma opção chamada "Desativar redimensionamento de terminal controlado remotamente". Marque a caixa, aplique a configuração e tente a tela novamente. Acho que você encontrará o problema resolvido.


KiTTY é muito melhor substituto para PuTTY em que OS você é forçado a usar ...
Anubioz

5

Tente adicionar isso (de / etc / screenrc) ao seu ~ / .screenrc:

# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>
# (This fixes the "Aborted because of window size change" konsole symptoms found
#  in bug #134198)
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

https://superuser.com/a/217281/6593


1
Em MPutty isso resolve definitivamente sessão massa não preenchendo toda a página, mas a abertura muito pequena
Thomas8
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.