ATUALIZAR
tl; dr Solução: atualize para menos 530
Em http://www.greenwoodsoftware.com/less/news.530.html :
Não imprima a sequência init do terminal se usar -F e o arquivo couber em uma tela.
Portanto, com essa correção, nem precisamos nos preocupar em determinar se devemos usar -X
por conta própria, less -F
apenas cuida dela.
PS. Algumas outras configurações menos que eu uso:
export PAGER='less -F -S -R -M -i'
export MANPAGER='less -R -M -i +Gg'
git config --global core.pager 'less -F -S -R -i'
#alias less='less -F -S -R -M -i'
Acabei escrevendo um invólucro por conta própria.
#!/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"
Usuários do BSD / OSX devem instalar manualmente gnu-sed
. O incrível regexp, que ajuda a remover códigos de cores, é de /programming//a/18000433/2487227
Salvei esse script /usr/local/bin/pager
e, em seguida,git config --global core.pager /usr/local/bin/pager
O tratamento para pacientes com TOC, viva!
-F
(saia de uma tela), sempre o faço em combinação com-X
(desativar termcap init e de-init), mas, como você diz, isso não permite a rolagem com o mouse. (Eu duvido que a rolagem seja possível-X
.) Modifiquei o título da pergunta, mas sinta-se à vontade para revertê-la se você sentir que ela perde muito significado. :)