As seguintes configurações parecem funcionar. O texto na segunda linha desaparece se a linha de comando ultrapassar a primeira linha. A preexecfunção apaga a segunda linha antes de executar o comando; se você quiser mantê-lo, mude para preexec () { echo; }.
%escapes estão documentados no manual zsh ( man zshmisc).
Terminfo é uma API de acesso ao terminal. O Zsh possui um terminfomódulo que dá acesso ao banco de dados de descrição do terminal: $terminfo[$cap]é a sequência de caracteres a serem enviados para exercer a capacidade do terminal $cap, ou seja, para executar seu $capcomando. Consulte man 5 terminfo(no Linux, o número da seção pode variar em outros departamentos) para obter mais informações.
A sequência de ações é: mova o cursor uma linha para baixo ( cud1) e depois para cima ( cuu1); salve a posição do cursor ( sc); mova o cursor uma linha para baixo; impressão [some status]; restaure a posição do cursor. O bit para baixo e para cima no início é necessário apenas se o prompt estiver na linha inferior da tela. A linha preexec apaga a segunda linha ( el) para não se confundir com a saída do comando.
Se o texto na segunda linha for mais largo que o terminal, o visor poderá ficar distorcido. Use Ctrl+ Lem uma pitada para reparar.
Aqui está o bashequivalente à solução zsh de Gilles. O Bash não possui um módulo terminfo nativo, mas o tputcomando (incluído no pacote terminfo) faz a mesma coisa.
@ Gilles: Obrigado pela contribuição! Eu acho que estou trabalhando melhor agora. Tentei o bash 4.1.5 no gnome-terminal e no xterm e o bash 3.2.48 no OSX Terminal.
Respostas:
As seguintes configurações parecem funcionar. O texto na segunda linha desaparece se a linha de comando ultrapassar a primeira linha. A
preexec
função apaga a segunda linha antes de executar o comando; se você quiser mantê-lo, mude parapreexec () { echo; }
.%
escapes estão documentados no manual zsh (man zshmisc
).Terminfo é uma API de acesso ao terminal. O Zsh possui um
terminfo
módulo que dá acesso ao banco de dados de descrição do terminal:$terminfo[$cap]
é a sequência de caracteres a serem enviados para exercer a capacidade do terminal$cap
, ou seja, para executar seu$cap
comando. Consulteman 5 terminfo
(no Linux, o número da seção pode variar em outros departamentos) para obter mais informações.A sequência de ações é: mova o cursor uma linha para baixo (
cud1
) e depois para cima (cuu1
); salve a posição do cursor (sc
); mova o cursor uma linha para baixo; impressão[some status]
; restaure a posição do cursor. O bit para baixo e para cima no início é necessário apenas se o prompt estiver na linha inferior da tela. A linha preexec apaga a segunda linha (el
) para não se confundir com a saída do comando.Se o texto na segunda linha for mais largo que o terminal, o visor poderá ficar distorcido. Use Ctrl+ Lem uma pitada para reparar.
fonte
Aqui está o
bash
equivalente à solução zsh de Gilles. O Bash não possui um módulo terminfo nativo, mas otput
comando (incluído no pacoteterminfo
) faz a mesma coisa.Se o terminal não suportar um dos recursos, ele retornará ao prompt de uma linha.
A
trap
linha é uma maneira hacky de emular apreexec
função do zsh . Consulte /superuser/175799/ para obter mais informações.EDIT : Script melhorado com base nos comentários de Gilles.
fonte