如果我尝试用 打开一个文件less
,它的内容从光标位置开始,而不是从屏幕顶部开始。
。
这只发生在 gnome-terminal 中,例如在 Terminator 中一切正常。我该如何修复它?
答案1
正如 egmont 所说,less
应该能够定位光标,而且确实有办法这样做。根据less
手册页:
选项也可以从环境变量“LESS”中获取。例如,为了避免每次调用 less 时都输入“less -options ...”,您可以告诉 csh:
setenv LESS “-options”
或者如果你使用 sh:
LESS="-options";导出LESS
因此,为了让less
光标位于顶部重新绘制屏幕,请执行以下操作
echo 'LESS="-c"; export LESS' >> ~/.bashrc
-c
选项,代表“清除屏幕”,将less
自动附加到每个,甚至可以在 TTY 中工作,清除屏幕并重新定位光标
答案2
gnome-terminal
两者terminator
都依赖于vte
小部件进行终端仿真,尽管terminator
使用的是古老的(基于 gtk2)版本。更准确地说,terminator
使用vte
版本 0.28.2(在 Ubuntu 14.04 和 16.06 中),而在 Ubuntu 14.04 中gnome-terminal
使用vte
版本 0.34.9,在 Ubuntu 16.04 中使用版本 0.42.5。
与大多数软件一样,新版本应该更加稳定、功能丰富、错误更少(尽管肯定会时不时地出现新的错误、回归、人们不喜欢的更改等)。vte
在过去 3 年中确实收到了大量的更改(修复),包括这个。
vte
旨在xterm
将其用作模拟行为的参考(除非它发现有充分的理由偏离,这种情况很少发生)。在这种情况下,我们没有发现偏离的理由(并且我们可能有一个有效的错误报告,关于在vte
切换到备用屏幕时光标位置没有按预期工作),所以我们将其修复vte
为像 一样的行为xterm
。
换句话说,Ubuntu 14.04 的gnome-terminal
,以及 14.04 和 16.04 都terminator
存在问题,假设我们接受正确的行为是由 定义的xterm
。版本terminator
远远落后vte
,当他们最终发布基于 gtk3 的版本时,将会收到这个修复程序(以及许多其他修复程序)。
我明白您不喜欢 的新行为less
(实际上我也不喜欢,我更喜欢它意外地与旧版 配合使用的方式),但是,故意破坏以实现以前的行为vte
绝对是一种错误的方法。相反,应该能够将光标定位在屏幕顶部。如果当前的行为真的让您感到困扰,我建议您针对 提交错误报告/功能请求。vte
less
less