Git
如何在沒有“-X”的情況下使用“less -F”,但如果只有一頁仍然顯示輸出?
我正在調整 Git 的尋呼機,但我遇到了一些問題。
我想要的是:
- 始終彩色輸出
- 通過觸摸板或滑鼠滾動
- 單屏退出
而我目前的配置是:
$ 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
強迫症患者的治療,萬歲!