comando 'less' que limpa a tela ao sair - como desligá-lo?

79

Como forçar o lessprograma a não limpar a tela ao sair?

Eu gostaria que ele se comportasse como um git logcomando:

  • ele deixa a página vista recentemente na tela ao sair
  • ele não sai do lessmesmo se o conteúdo couber em uma tela (tente git log -1)

Alguma ideia? Eu não encontrei nenhuma lessopção adequada nem variáveis ​​env em um manual, mas suspeito que seja definido por meio de alguma variável env.

Wojciech Kaczmarek
fonte
Presumivelmente, você precisa do aspecto de rolagem menor, então morenão seria adequado?
Svend

Respostas:

95

Para impedir a lesslimpeza da tela ao sair, use -X.

Na página de manual:

-X ou --no-init

Desativa o envio das seqüências de inicialização e desinicialização do termcap para o terminal. Às vezes, isso é desejável se a string de desinicialização fizer algo desnecessário, como limpar a tela.

Quanto menos sair se o conteúdo couber em uma tela, essa é a opção -F:

-F ou - encerrar se uma tela

Faz com que menos saia automaticamente se o arquivo inteiro puder ser exibido na primeira tela.

-Fnão é o padrão, portanto, é provável que seja predefinido em algum lugar para você. Verifique o env var LESS.

sleske
fonte
Excelente! -X é o que eu tinha em mente.
Wojciech Kaczmarek
7
Isso é especialmente irritante se você souber, -Fmas não -X, pois a mudança para um sistema que redefine a tela no init fará com que arquivos curtos simplesmente não apareçam, sem motivo aparente. Isso me incomodou ackquando tentei levar minha ACK_PAGER='less -RF'configuração para o Mac. Muito obrigado!
markpasc
@markpasc: Obrigado por apontar isso. Eu não teria percebido que essa combinação causaria esse efeito, mas agora é óbvio.
sleske
7
Isso é especialmente útil para o pager manual, para que as páginas do manual não desapareçam assim que você sair menos com a tecla 'q'. Ou seja, você rola para a posição em uma página de manual em que está interessado apenas para que desapareça ao sair do menos pager para usar as informações. Então, eu adicionei: export MANPAGER='less -s -X -F'ao meu .bashrc para manter as informações da página de manual na tela quando eu sair menos, para que eu possa usá-las, em vez de ter que memorizá-las.
Michael Goldshteyn
2
É meio ruim que você tenha que decidir quando começar lesscomo deve se comportar quando sair.
Michael Burr
17

Se você desejar que qualquer uma das opções da linha de comando seja sempre o padrão, adicione ao seu perfil .profile ou .bashrc a variável de ambiente LESS. Por exemplo:

export LESS="-XF"

sempre aplicará -X -F sempre que menos for executado a partir dessa sessão de logon.

Às vezes, os comandos têm alias (mesmo por padrão em certas distribuições). Para verificar isso, digite

alias

sem argumentos para ver se ficou com alias com as opções que você não deseja. Para executar o comando real no seu $ PATH em vez de um alias, apenas o anteceda com uma barra invertida:

\less

Para verificar se uma variável de ambiente LESS está definida no seu ambiente e afeta o comportamento:

echo $LESS
Derek Douville
fonte
2
Na verdade, eu adiciono export LESS="-XFR"para que as cores também apareçam less.
dotancohen
2
Obrigado por isso! -XFpor si só, estava quebrando a saída git diffe -XFRobtendo o melhor dos dois mundos - sem limpeza de tela, mas git diffsaída colorida .
Giles Thomas
1

Ou apenas defina-o na sua configuração global do git:

git config --global core.pager 'less -FX'

Dessa forma, outras ferramentas não são afetadas (do que eu gosto).

Lester Cheung
fonte