Estranho fechamento do editor vi

2

Ao fechar o editor vi , (sem permitir que ele carregue todo o arquivo),

-bash-3.2$ vi /var/spool/mail/user1
-bash-3.2$ 0;136;0c

deixou 0;136;0c para avisar, o que poderia ter feito isso acontecer, não deixando o vi carregar o conteúdo ou o que é?

    
por Keyshov Borate 11.02.2015 / 14:03

1 resposta

3

Há algumas coisas que me impedem de dizer definitivamente qual é o motivo: primeiro, não sei se você está usando vim , vile , nvi ou heirloom vi . A segunda coisa que eu não sei é como você fechou o vi , mas vou adivinhar.

Até onde eu sei, todos os programas vi usam seqüências de escape para controlar o que aparece na tela. Ou seja, em vez de usar as chamadas do sistema de janelas para posicionar cursores e escrever texto, vi usa o valor da variável de ambiente TERM para descobrir para qual tipo de terminal deve gerar saída. Com base no valor de TERM, ele envia seqüências especiais de bytes, que geralmente começam com 0x1b, ASCII "ESC" ou caractere de escape. Os bytes especiais são chamados de "seqüências de escape".

Antigamente, o hardware dos terminais seriais fazia coisas especiais, como mover o cursor, ou alterar cores de texto ou fontes, ou desenhar linhas, ou mudar para um conjunto de caracteres diferente baseado nessas seqüências de escape. vi ainda os usa, até onde eu sei. Toda a sequência de escape foi resumida em uma biblioteca chamada "curses" ou "ncurses", que os programas em C podem usar.

Meu palpite é que quando você fechou vi (provavelmente fazendo o controle-C, ou control-backslash), você pegou vi no meio da saída de alguma seqüência de escape. O que você vê são os últimos poucos bytes dessa sequencia de fuga. Ele aparece como acontece porque o byte ASCII "ESC" nunca obteve saída, ou obteve saída logo antes do controle-C, e o terminal interpretou o controle-C como parte da seqüência de escape. Seja qual for a seqüência de escape que o terminal achou que fosse interpretar, a sequência de bytes vi apagou e você vê os restos da sequência de escape pretendida.

    
por 11.02.2015 / 14:57

Tags