wja*_*rea 8 command-line git less
当我运行less某个文件时,提示消失,我在屏幕上看到文件的内容。然后当我按下 时q,它会返回到提示。我认为less通过保存当前终端缓冲区,打开一个新缓冲区,将文件输出到新缓冲区,然后关闭时,丢弃新缓冲区并恢复旧缓冲区来做到这一点,但我不知道这个过程被称为什么或它是如何做到的。
我看了看,man less但没有找到任何东西。我尝试使用谷歌搜索它,但找不到任何有用的东西,除了该screen命令可以对 shell 会话执行相同的操作。
最终,我问是因为我想git diff使用新的缓冲区而不是内联打印。我已经设置了GIT_PAGER=lessand git --paginate diff,但他们没有改变任何东西。我有一个解决方法,但它有点长:git diff --color=always | less -R
更新:经过一番研究,它看起来像tput smcup和tput rmcup高层次的命令做同样的事情,可能使用的termcap包。
的所有less屏幕管理功能都在其screen.c模块中。在启动时,除非它处于“no init”(-X或--no-init)模式,否则它会输出其sc_init字符串,即termcap的ti字符串(“终端初始化”,它使终端准备好进行全屏、光标控制操作)。在退出时,它输出其sc_deinit字符串,即termcap的testring。
行为你看到的是默认的行为git,如果less没有配置的(即该LESS变量没有设置); 在这种情况下,使用选项git运行less,如果内容适合单个屏幕,则分别退出,显示颜色,并跳过初始化终端。FRXless
要获得您所追求的行为,请设置LESS为-R,或将core.pager git设置设置为类似less -+X(man git-config有关详细信息,请参阅)。
| 归档时间: |
|
| 查看次数: |
436 次 |
| 最近记录: |