4ae*_*1e1 5 git macos terminal command-line less-unix
在OS X终端中,当less它自己或其他程序调用时man,在我们退出后它的输出将不会被写入ttyless.例如,如果我们运行less README,我们会暂时被引导到一个屏幕上
SO rocks.
README (END)
Run Code Online (Sandbox Code Playgroud)
按下之后q,输出less会消失,我们最终会得到类似的结果
$less README
$ # shell waiting for input
Run Code Online (Sandbox Code Playgroud)
但是,如果less被调用git(在我的情况下git设置为寻呼机)则不是这种情况less -r.退出后,输出less始终写入tty.例如,如果我们运行git log --oneline,如果日志很短less则甚至不会被调用; 如果日志长于一个屏幕,那么我们会less像往常一样暂时指向输出屏幕:
0000000 set the pager of git to less
......
1111111 what's wrong with git?
(END)
Run Code Online (Sandbox Code Playgroud)
按下之后q,整个东西都被写入了tty,所以我们最终得到了类似的东西
$git log --oneline # OMG!!!
0000000 set the pager of git to less
...... (the entire log)
1111111 what's wrong with git?
$ # shell waiting for input
Run Code Online (Sandbox Code Playgroud)
那么有可能改变这种行为吗?我的意思是,是否可以配置git以便它总是将输出管道输出到更少(无论输出是长还是短),并且在less退出之后不在tty中留下任何内容?谢谢.
...是否可以配置git,以便始终将输出管道减少到...
是.默认情况下,git使用选项 [非专制来源上的道歉] less作为其寻呼机.FRSX
要获得您所追求的行为,您需要禁用F和X选项.你可以在全球范围内做到:
git config --global --replace-all core.pager 'less -+X -+F'
Run Code Online (Sandbox Code Playgroud)
阅读此答案以获得更长的解释,并且man less:
-F或--quit-if-one-screen
如果整个文件可以显示在第一个屏幕上,则会自动退出.
-X或--no-init
禁止将termcap初始化和取消初始化字符串发送到终端.如果取消初始化字符串不需要某些操作,例如清除屏幕,则有时需要这样做.
(我不确定为什么我们想要-X这种情况,但显然git默认情况下使用它,而关闭它会表现出你所追求的行为.)
| 归档时间: |
|
| 查看次数: |
790 次 |
| 最近记录: |