Answers:
更新
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
。来自/programming//a/18000433/2487227的惊人正则表达式可帮助删除颜色代码
我已将此脚本保存到/usr/local/bin/pager
,然后git config --global core.pager /usr/local/bin/pager
对强迫症患者的治疗,万岁!
fold
应该可以处理...但是,是的,可能是错误...您能请一个例子吗?
fold
不太了解标签。您可能可以使用修复它expand
。但这仍然无法处理嵌入的转义序列(通常在中需要git
)。
fold
并没有使用空格来调整换行,而只是找到了最接近的切点。因此,外观将具有误导性。
-F
(退出一个屏幕时退出)时,我总是将其与-X
(禁用termcap初始化和取消初始化)结合使用,但是正如您所说的那样,这不允许使用鼠标滚动。(我怀疑使用完全可以滚动-X
。)我已经修改了问题标题,但是如果您觉得它失去了太多的意思,可以随时将其回滚。:)