Como usar “less -F” sem “-X”, mas ainda exibir a saída se apenas uma página?

6

Estou mexendo no pager do Git, mas tenho alguns problemas com isso.

O que eu quero é:

  1. Saída sempre colorida
  2. Rolagem pelo touchpad ou mouse
  3. Sair-se-uma-tela

E minha configuração atual é:

$ git config --global core.pager
less -+F -+X -+S

Isso faz tudo, exceto o último.

Mas, se eu remover -+F , não haverá saída no caso de uma tela. Se eu remover -+X , a saída está de volta, mas não consigo rolar pelo touchpad em less .

Existe uma solução alternativa que atenda a todos os requisitos acima?

    
por Frederick Zhang 09.12.2016 / 03:33

1 resposta

2

Acabei por escrever um wrapper sozinho.

#!/usr/local/bin/bash

# BSD/OSX compatibility
[[ $(type -p gsed) ]] && SED=$(type -p gsed) || SED=$(type -p sed)
CONTEXT=$(expand <&0)
[[ ${#CONTEXT} -eq 0 ]] && exit 0
CONTEXT_NONCOLOR=$( $SED -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" <<< "$CONTEXT")
LINE_COUNT=$( (fold -w $(tput cols) | wc -l) <<< "$CONTEXT_NONCOLOR" )

[[ $LINE_COUNT -ge $(tput lines) ]] && less -+X -+S -R <<< "$CONTEXT" || echo "$CONTEXT"

Os usuários do BSD / OSX devem instalar manualmente gnu-sed . O incrível regexp, que ajuda a remover os códigos de cores, é do link

Salvei este script em /usr/local/bin/pager e, em seguida, em git config --global core.pager /usr/local/bin/pager

O tratamento para pacientes com TOC, hooray!

    
por 12.12.2016 / 15:10

Tags