Existe alguma maneira de sair “menos” sem limpar a tela?

63

Com relativa frequência, eu me vejo com vontade de sair do less , mas deixar o que eu estava vendo na tela, para me referir novamente. Há alguma maneira de fazer isso? Soluções alternativas?

(Minha solução alternativa atual é sair, então use more . Portanto, qualquer solução alternativa melhor do que isso é bem-vinda. O ideal seria algo que eu possa usar uma vez que já esteja dentro de less , talvez com uma configuração de casca ou algum script.)

Minha área de trabalho é o OSX, mas eu uso servidores RHEL e Ubuntu.

    
por Steve Bennett 14.05.2012 / 15:36

3 respostas

65

Esta é, na verdade, uma função do emulador de terminal que você está usando (xterm, gnome-terminal, konsole, screen). Uma tela alternativa, ou altscreen, é iniciada quando programas como less ou vim são invocados. Este altscreen não tem buffer de histórico e sai imediatamente quando você sai do programa, voltando para a tela original, o que restaura o histórico de conteúdo e o posicionamento da janela anterior.

Você pode impedir que less seja iniciado em uma tela alusiva passando o argumento "-X".

less -X /path/to/some/file

Você também pode passar "-X" como uma variável de ambiente. Então, se você estiver usando bash , coloque isso em ~/.bashrc :

export LESS="-X"

No entanto, isso desativa a inicialização e a desinicialização do termcap (capacidade do terminal), portanto, outras exibições quando você usa less podem aparecer desativadas.

Outra opção seria usar screen e definir a opção altscreen off no seu ~/.screenrc . less não limpará a tela e deverá preservar a formatação de cores. Presumivelmente, tmux terá a mesma opção.

Esta entrada do blog descreve o problema e oferece algumas soluções diferentes específico para gnome-terminal com sucesso variável.

    
por 14.05.2012 / 15:44
2

A maneira como me lembro disso é less -SEX para quando eu preciso despejar a saída na tela, mas não quero que as linhas sejam quebradas. Por exemplo, docker ps | less -SEX O que isso faz é isto:

  • %código%
    • Role em vez de quebrar
    • Se você eliminar o -S , poderá usar as teclas de seta para rolar
  • %código%
    • Sair quando você atingir o EOF
  • %código%
    • Impedir troca / eliminação de termos
    • A parte "memória" é que eu sei o que S e E fazem, então esta deve ser a outra parte. (E nossa razão para cometer este comando para a memória é que queremos despejar (não entrar em uma sessão interativa) saída não processada.

Espero que ajude. Se você não se lembra de -E , não há muita esperança para você. Apenas re-google toda vez que eu acho.

    
por 14.11.2018 / 17:17
1

A solução de George não funcionou para mim, mas essa solução funcionou (do entrada do blog vinculada em sua resposta).

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. Edite ~ / xterm-noclear.src

    • altere o nome na segunda linha de 'xterm' para 'xterm-noclear', ou o que mais lhe convier (também altere 'xterm-debian' se estiver presente)

    • remova as instruções "smcup" e "rmcup" (por exemplo, "smcup = \ E [? 1049h" e "rmcup = \ E [? 1049l,")

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear deve aparecer no seu diretório ~ / .terminfo)

  5. $ export TERM=xterm-noclear (agora verifique o comportamento de menos e, se estiver satisfeito, adicione a linha de diretiva de exportação ao seu ~ / .profile)

(Eu copiei estas instruções diretamente da edição rejeitada de @ jah da resposta de George.)

    
por 28.11.2017 / 03:57

Tags