Git

如何在沒有“-X”的情況下使用“less -F”,但如果只有一頁仍然顯示輸出?

  • August 9, 2019

我正在調整 Git 的尋呼機,但我遇到了一些問題。

我想要的是:

  1. 始終彩色輸出
  2. 通過觸摸板或滑鼠滾動
  3. 單屏退出

而我目前的配置是:

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

除了最後一個之外,這一切都做了。

但是,如果我刪除-+F,則在單屏的情況下將沒有輸出。如果我也刪除-+X,輸出又回來了,但我無法通過觸摸板滾動less

是否有可以滿足上述所有要求的解決方法?

更新

tl;dr 解決方案:升級到更少的 530

來自http://www.greenwoodsoftware.com/less/news.530.html

如果使用 -F 並且文件適合一個螢幕,則不要輸出終端初始化序列。

所以有了這個修復,我們甚至不需要費心決定是否-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

強迫症患者的治療,萬歲!

引用自:https://unix.stackexchange.com/questions/329093