recuperando de X crash effects em instâncias 'vim' rodando sob 'screen'

1

Eu tenho usado muito screen . Uma das minhas motivações é a promessa de que minhas sessões de edição (por exemplo, vim instance) sobreviverão a um X crash. Embora a sessão screen realmente exceda o X, estou descobrindo que não é totalmente utilizável depois que o X foi reiniciado. vim em particular parece adquirir algumas falhas estranhas, como uma falha em redesenhar a tela corretamente; Também não consigo ver o texto que é enviado por um comando shell (por exemplo, :!ls ).

Estou usando a versão 10.04 do pacote vim-gnome do Ubuntu. Esta é a versão 7.2.330-1ubuntu3 . É provavelmente relevante que essa versão de vim possa ser executada como um aplicativo GUI do GNOME2 ou como um aplicativo de console. Mesmo quando executado a partir do console, ele se integra de alguma forma ao X, por exemplo, fornecendo acesso à área de transferência.

Existe alguma maneira de evitar que esses problemas ocorram ou se recuperem desse estado?

Uma lista de sintomas notáveis em vim instâncias que sobreviveram a uma falha X:

  • A conclusão de tabulação não funciona na linha de comando: em vez disso, é inserido um caractere ^I . Isso acontece, por exemplo, ao tentar completar um nome de arquivo válido que está sendo passado como um argumento para :tabedit .

  • q: não responde. O :^F parece funcionar, mas foi um pouco estranho iniciar o primeiro par de vezes - pareceu pausar sem atividade HD ou CPU por alguns segundos antes de chegar. Nesse meio tempo, consegui mover o cursor - com j , k , etc. - na área em que a janela de buffer da linha de comando apareceria mais tarde.

    update : Após uma inspeção mais aprofundada, parece que ele está apenas desenhando a janela de linha de comando quando tento mover o cursor além do final de uma linha.

    ^C não funciona para cancelar a janela da linha de comando. Se eu quiser sair sem executar um comando, tenho que acessar [ENTER] em uma linha em branco.

  • os comandos da linha de comando inseridos na linha de comando, ou seja, não da janela de buffer da linha de comando, não são adicionados ao histórico da linha de comando.

  • o comando :ls e outros comandos que normalmente exibem a saída multilinha, não exibem a saída. EG :echo "onefish" funciona normalmente, mas nenhuma saída é exibida como resultado do comando :echo "onefish\ntwofish" .

  • como mencionado acima, a saída dos comandos do shell não aparece. Comandos do shell que usam curses (por exemplo, :!man ls ) funcionam.

  • Os registradores da área de transferência X @* e @+ não estão disponíveis: tentar, por exemplo, colar via "+p dá erro E353: Nothing in register + . Eu gostaria de esperar que essa questão específica estivesse presente e suspeite que ela não esteja relacionada aos outros problemas. Em qualquer caso, seria ótimo encontrar uma solução para isso.

Minha solução atual é fazer um :mksession e, em seguida, sair do vim e reiniciá-lo com essa sessão. Isso vai ser meio chato, já que tenho cerca de 10% devim instâncias em execução, muitas com alguns buffers sem nome úteis, variáveis vimscript e outras entidades que não são salvas em sessões.

Eu tentei a sugestão de @ {griff steni.us}, mas nem :redraw! nem ^L I parece ter algum efeito útil. ^L I fez a tela piscar.

    
por intuited 25.07.2010 / 07:46

1 resposta

0

estou apenas adivinhando, mas talvez a instância da tela tenha sido maior do que o tamanho do seu terminal agora, ou seja, não 80x24 caracteres.

no vim você pode fazer: redesenhar!

e na tela você pode tentar voltar a exibir ^ L l

    
por 25.07.2010 / 07:52