
Sou um usuário entusiasta docasca de peixee eu gosto muito.
Porém, uma pergunta:
na páginahttps://fishshell.com/docs/2.1/index.htmlhá um parágrafo intitulado"Editor de linha de comando". Ele lista muitos atalhos úteis.
O que é mais interessante para mim éCtrl-L. De acordo com a descrição: “Ctrl-L limpa e repinta a tela”. Eu experimentei e funciona como desejado. No entanto, produz alguns sinais que são adicionados ao prompt anterior. Isso pode ser visto ao rolar para trás.
Exemplo:
rosika@... ~/Schreibtisch> [3;J
rosika@... ~/Schreibtisch>
Então [3;J
é sobre isso que estou perguntando. Na verdade, é [
algum tipo de retângulo com (eu acho) 4 dígitos.
Alguém pode me dizer por que esse fenômeno ocorre? Do que se trata e deveria ser assim?
Muito obrigado antecipadamente.
Saudações
Rosika
Meu sistema:
Linux/Lubuntu 16.04.4 LTS, 64 bits
peixe v. 2.2.0-3
Responder1
terminais unix são preenchidos com conteúdo interpretando sequências de controle e texto misturados em um único fluxo. muitos caracteres podem ser texto e código de controle e depende do contexto o que eles significam.
<esc> [3;J
é uma dessas sequências. no contexto errado ele é impresso, no contexto certo faz parte da redefinição da exibição.
veja as páginas termcap
, console_codes
e tput
man para mais detalhes.
Responder2
Seu emulador de terminal não corresponde ao valor da sua TERM
variável de ambiente. O erro mais comum é pensar que algo que não é XTerm corresponderá aos registros termcap/terminfo nomeados xterm
ou xterm-new
ou xterm-256color
.
E3
Seu registro terminfo especifica o recurso relativamente novo (atualmente especificado para linux
, putty
, putty-256color
, xterm-basic
, xterm-new
, xterm
, xterm-256color
e alguns outros tipos de terminal) que informa aos programas que há um buffer de rolagem para limpar e como limpá-lo. Mas o seu emulador de terminal, de fato, não suporta essa sequência de controle e, em vez disso, imprime o que você vê em resposta a ela. O shell de peixe está executando o clear
comando, que agora faz uso deste aumento de terminfo.
O nome fornecido no valor da sua TERM
variável de ambiente deve corresponder ao nome de um registro termcap/terminfo que descreve corretamente a operação do seu emulador de terminal.
Leitura adicional
- https://unix.stackexchange.com/a/375784/5132
- https://unix.stackexchange.com/a/341619/5132
- https://unix.stackexchange.com/a/419092/5132
- https://unix.stackexchange.com/a/318297/5132
- c02y (24/03/2016).como vincular o “Ctrl-l” para esvaziar a tela em vez de limpar o buffer do terminal?. bug de casca de peixe #2855. Github.