「-X」なしで「less -F」を使用しますが、ページが1つしかない場合でも出力を表示する方法は?

「-X」なしで「less -F」を使用しますが、ページが1つしかない場合でも出力を表示する方法は?

Gitのページネーターを調整していますが、いくつかの問題が発生しました。

私が望むもの:

  1. 常にカラーで出力
  2. タッチパッドまたはマウスを使ってスクロール
  3. 1画面で終了

私の現在の構成は次のとおりです。

$ 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を使用してファイルが1画面に収まると、端末初​​期化シーケンスは出力されません。

-Xしたがって、この修正を使用すると、私たちが直接使用するかどうかを心配する必要はless -Fありません。

PS。私が使用するあまり一般的な構成は次のとおりです。

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

強迫障害患者の治療が万歳!

おすすめ記事