Git의 페이지네이터를 조정하고 있는데 몇 가지 문제가 발생했습니다.
내가 원하는 것은:
- 항상 컬러로 출력
- 터치패드나 마우스를 통해 스크롤
- 한 화면에서 종료
내 현재 구성은 다음과 같습니다
$ git config --global core.pager
less -+F -+X -+S
마지막 항목을 제외하고는 모두 수행할 수 있습니다.
하지만 제거하면 -+F
단일 화면의 경우 출력이 없습니다. 해당 항목도 삭제 하면 -+X
출력이 다시 표시되지만 터치패드를 통해 스크롤할 수는 없습니다 less
.
위의 요구 사항을 모두 충족하는 해결 방법이 있습니까?
답변1
고쳐 쓰다
tl;dr 솔루션: 530 미만으로 업그레이드
~에서http://www.greenwoodsoftware.com/less/news.530.html:
-F를 사용하고 파일이 한 화면에 맞으면 터미널 초기화 시퀀스가 출력되지 않습니다.
-X
따라서 이 수정 사항을 사용하면 우리 가 직접 사용 할지 여부를 고민할 필요도 없이 less -F
그냥 처리하면 됩니다.
추신. 내가 사용하는 덜 일반적인 구성은 다음과 같습니다.
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'
결국 나는 래퍼를 직접 작성했습니다.
#!/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"
BSD/OSX 사용자는 수동으로 설치해야 합니다 gnu-sed
. 놀라운 정규식은 색상 코드를 제거하는 데 도움이 됩니다.https://stackoverflow.com/a/18000433/2487227
/usr/local/bin/pager
나는이 스크립트를 그때 저장했습니다git config --global core.pager /usr/local/bin/pager
강박장애 환자의 치료가 만세!
답변2
내 호출기에 다음 래퍼를 사용합니다. 여기에 표시된 다른 래퍼만큼 화려하지는 않지만(항상 긴 줄을 자르는 데 사용되므로 less -S
) 매우 간단합니다. iTerm2와 잘 작동하는 것 같습니다.
#!/bin/bash
set -e
text=$(</dev/stdin)
text_lines=$(echo "${text}" | wc -l)
term_lines=$(tput lines)
if [[ $text_lines -lt $term_lines ]]; then
echo "${text}"
else
echo "${text}" | less -S -R
fi