como fazer menos pager responder à roda de rolagem e não limpar a tela


13

Conheço respostas como como fazer com que a roda do mouse role o menor pager usando o terminal bash e gnome , que é remover o -Xsinalizador da variável de ambiente $ LESS. Mas eu gostaria de fazer os dois :

  1. usar a roda do mouse para rolar o pager (em oposição a rolagem da barra de rolagem da janela de terminal) (que você começa por remover -X a partir $LESS)
  2. faça com que o conteúdo do pager permaneça na tela depois de sair (o que normalmente é feito adicionando -X a $LESS).

Existe alguma maneira de eu pegar meu bolo e comê-lo também?

Respostas:


20

Não sem invadir o código-fonte de menos. Um pouco da história de fundo:

Menos não consegue lidar com o mouse (incluindo eventos de rolagem).

Os emuladores de terminal suportam a chamada tela alternativa. É para isso que a maioria dos aplicativos de tela cheia muda para sua duração (e volta para a tela normal quando eles saem, fazendo com que o conteúdo anterior seja "restaurado") e não possui um buffer de rolagem. Menos também muda para essa tela alternativa, a menos que -Xseja fornecido nesse caso.

Muitos emuladores de terminal descobriram que, quando está no modo de tela alternativo e o aplicativo em execução no interior não está interessado em eventos de mouse, faz sentido converter a rolagem em eventos de pressionamento de tecla Para cima ou Para baixo. É um hack, e seria prejudicial na tela normal (imagine o que aconteceria, por exemplo, no prompt do shell) ou quando o aplicativo desejar manipular o mouse (com certeza, eles terão que ver os eventos reais do mouse). Mas como, por padrão, nenhum desses dois se mantém quando você está executando less, esse hack entra em ação (sujeito ao emulador de terminal que o suporta e é ativado via \e[?1007hvs.\e[?1007l) Seus eventos de rolagem são convertidos pelo emulador de terminal em pressionamentos de tecla Para cima e Para baixo e menos não podem distingui-los dos pressionamentos de tecla reais. Ele não recebe eventos de rolagem do mouse: vê os pressionamentos de tecla Para cima e Para baixo.

Aí está você: Você muda para a tela alternativa e o hack do terminal converte os eventos de rolagem em pressionamentos de tecla por menos, e a tela normal é restaurada quando você sai; ou não, e não poderá haver eventos mágicos de conversão de rolagem em pressionamentos de tecla e menos não entenderá os eventos de rolagem.

Então, o que poderia ser feito? Bem, implemente o suporte ao mouse em menos e permita que ele gerencie os eventos de rolagem (e viva com um comportamento não-padrão de clicar ou copiar e colar) ou implemente outro truque estranho: ao sair, depois de voltar para a tela normal, lesspela última vez , poderia imprima uma tela cheia de conteúdo, repetindo o que foi exibido antes de sair.

Na prática, tudo se resume a: desculpe, esqueça.


0

Aparentemente, a atualização para menos de 530 ou mais recente fornece o recurso desejado,

http://www.greenwoodsoftware.com/less/news.530.html

Estas são as diferenças entre a versão 487 e a versão 530:

Não imprima a sequência init do terminal se usar -F e o arquivo couber em uma tela.

Não encontrou nenhum PPA 'menos' com a versão mais recente; basta baixar o pacote de origem e compilar localmente e instalá-lo.

e configure o git assim:

git config --global core.pager 'less -F -S -R -i -+X'

Mais informações: Como usar "less -F" sem "-X", mas ainda exibir a saída se houver apenas uma página?


0

Não é realmente possível usar a roda do mouse para rolar em menos pager, mas é possível usar a roda do mouse para rolar o conteúdo com o w3m pager! O w3m é um " pager navegável na WWW com excelente suporte a tabelas / quadros "; portanto, é possível usá-lo como um navegador da web do console. Além disso, é possível usar o w3m como visualizador de imagens do console (não funciona com todos os emuladores de terminal, mas funciona muito bem com o xterm). O w3m " tem suporte para tabelas, quadros, conexões SSL, imagens coloridas e embutidas ". Aplicação muito útil! captura de tela

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.