如何减少git log或less -X退出后留存的终端输出行数?
解决方法
1. 调整less的行为(适用于less -X和依赖less的git命令)
因为你用less -X保留屏幕输出时,PS1开头的换行挤占了一行终端空间,导致输出上滚丢失首行。可以给less添加退出后回滚一行的操作:
- 在
~/.bashrc中添加别名配置:
每次执行alias less='less -X && tput cuu1'less -X并按q退出后,终端会执行tput cuu1(光标上移一行,带动内容回滚),既能找回被顶出视野的首行,也能让留存的输出行数减少一行,满足你5行终端留前3行的需求。
2. 单独配置git的分页器
git log默认使用less作为分页器,你可以直接为git的分页器添加回滚操作:
- 执行以下命令修改git全局配置:
这样git log退出后,同样会触发回滚一行的操作,解决首行输出丢失的问题。git config --global core.pager 'less -X && tput cuu1'
3. 从根源修改PS1的实现(推荐)
你给PS1开头加换行是为了让提示符始终在行首,其实可以用PROMPT_COMMAND替代,避免额外换行挤占空间:
- 在
~/.bashrc中替换原PS1的换行配置,添加:PROMPT_COMMAND='echo -ne "\r"' PS1='你的原PS1内容(去掉开头的换行)'PROMPT_COMMAND会在显示PS1之前,强制将光标移到当前行开头,不管之前的命令输出有没有结尾换行,PS1都会从行首开始,彻底解决输出上滚的问题,无需调整less或git的配置。
内容的提问来源于stack exchange,提问作者donquixote
相关产品推荐
相关产品推荐

