Você pode modificar interativamente o reset do terminal em 'less'?

1

Eu geralmente não quero redefinir o terminal quando eu sair do less (ou seja, eu quero que a tela continue exibindo o que eu estava vendo). Normalmente, quando estou em uma nova caixa e ainda não a configurei, invoco less , desisto, vejo a reinicialização da tela, xinguei suavemente e executei novamente com less -X ... Em ocasiões muito raras, lembro que a tela vai resetar assim que eu sair, caso em que a sequência de eventos é levemente modificada e a maldição leve ocorre antes de eu sair, mas o efeito geral é o mesmo.

Existe alguma maneira de modificar um processo less atualmente em execução para que ele não redefina o terminal ao sair?

    
por William Pursell 26.10.2018 / 00:54

2 respostas

3

Alguns terminais (como o xterm) possuem uma configuração de menu que ativa / desativa a alternância de / para a tela alternativa. A maioria não ...

A propósito (mesmo problema de alguns / mais), se um terminal implementa a troca de tela alternativa xterm 47 original, é possível voltar para a tela alternativa sem limpar isto. Eu notei alguns que definem TERM=xterm que não implementam isso (somente implementando o código 1049 posterior) - ymmv

Você pode ver como o código 47 é usado em uma descrição normal do terminal, analisando o smcup e rmcup capacidades de

infocmp xterm-old

que mostra esses itens (entre outros):

rmcup=\E[2J\E[?47l\E8,
smcup=\E7\E[?47h,

O \E[2J em rmcup apaga a tela (alternada) antes de voltar para a tela normal. O \E7 e o \E8 salvam / restauram a posição do cursor (para a tela normal). Se você realmente queria , você poderia substituir esses recursos com qualquer descrição de terminal compatível com xterm , omitindo a parte de limpar a tela, permitindo que você fazer

tput smcup
tput rmcup

da linha de comando e veja o que estava na tela alternativa. Não seria legal (já que sua linha de comando sobrescreveria partes dela), mas pode ajudar.

Não é necessário no xterm, pois o xterm tem uma opção de menu para alternar entre os dois lados. Mas você pode achar essa abordagem útil.

Leitura adicional:

por 26.10.2018 / 01:19
2

use | . cat .

Passo a passo: pressione | , em seguida, no prompt |mark: , pressione . e, em seguida, no prompt ! , insira cat e, no prompt |done (press RETURN) , pressione Enter novamente; quando você sair do less , a página atual será deixada na tela.

Se você quiser que a saída seja processada como era por less (com backspace + sublinhado transformado em sublinhado, caracteres não imprimíveis mostrados como <XX> , etc), use less -FX em vez de cat .

da% man_de% manpage:

  | <m> shell-command
          <m> represents any mark letter.  Pipes a section  of  the  input
          file  to the given shell command.  The section of the file to be
          piped is between the first line on the current  screen  and  the
          position  marked by the letter.  <m> may also be ^ or $ to indi-
          cate beginning or end of file respectively.  If <m> is . or new-
          line, the current screen is piped.

Depois, se você quiser simplesmente zapear a alternância de tela less(1) / rmcup sem precisar reconfigurar novamente cada clone do xterm, você pode usar este comando:

infocmp | sed 's/[sr]mcup=[^=]*,//g' | tic -

Isto irá escrever dentro de smcup uma descrição do terminal para o seu terminal atual com os códigos para alternância de tela omitidos. Deve ser usado em preferência ao de ~/.terminfo pela maioria dos programas.

    
por 26.10.2018 / 01:19