像许多(大多数)一样,我使用 git,它默认将其输出(用于差异、日志等)发送到less
,并带有选项-FRSX
。通过设置要使用覆盖选项调用的寻呼机,可以在 .gitconfig 中覆盖这些选项。例如:
pager=less -F -+S
当我设置less
在输出少于一屏后退出时不是截断行(即less -F -+S
如上面的示例所示),在运行(比如说)命令后,我会自动返回到命令提示符log
。
然而,如果我做让它砍线(即仅使用less -F
),并且任何行都会被截断,那么当它结束时,它不立即退出,但打印END
并等待我按Q,这有点烦人。
(请注意,有问题的行为确实不是如果没有行被截断,就会发生这种情况,因为它们都比我的终端窄。问题没有发生,因为它是问截断行,但它实际上是这样做的。)
有没有办法截线并less
在不到一个屏幕后仍然自动退出?
答案1
嗯...这违背了分页的想法...不是吗? :-)
但回答你的问题:我很确定没有。这是来自less的源代码:
/*
* The char won't fit in the line; the line
* is too long to print in the screen width.
* End the line here.
*/
if (chopline || hshift > 0) <--- you have chop lines (-S)
{
...
quit_if_one_screen = FALSE; <--- this resets -F
}
对不起 :-)
答案2
由于当任何行被 截断时less
会有效地禁用,因此您无法单独解决此问题。一种替代方法是截断行--quit-if-one-screen
chop-long-lines
less
前将它们传递给 less。像这样的东西:
pager = "cut -c -512 | less --quit-if-one-screen"
或者,如果您想让它根据您的终端宽度而变化:
pager = "cut -c -$COLUMNS | less --quit-if-one-screen"