我连接到Z 壳在 Red Hat Enterprise Linux 6.2 机器上通过油灰。在 Unix shell 中,我退出全屏进程(例如 Vim 和 less)后,shell 提示符从屏幕的最后一行开始。上面的屏幕仍然显示该进程的上下文,因此我丢失了在打开该进程之前 shell 显示的所有内容。
在我自己的 Ubuntu 机器上不会发生这种情况,退出一个进程后,我会回到我输入的最后一个命令下面的行。
我可以更改哪些选项(也许在zshrc
?)以使其像我的 Ubuntu 盒子一样运行?
答案1
我也遇到过这个问题。检查终端->功能下的 PuTTY 设置。如果选中了“禁用切换到备用终端屏幕”,请取消选中它。(该页面上的所有设置均未选中。)该选项的帮助看起来很有希望。
否则,这一页我通过谷歌搜索发现可能会给你一些想法。你也许可以设置一些 terminfo 内容以使其正常工作。
答案2
在很久以前修复了这个问题之后,我遇到了类似的问题,而 Vim 并没有这个问题,但less
确实有。这影响了所有使用它的程序less
,例如man
。我发现,原因是LESS
环境变量,它列出了每次调用时自动传递给它的参数。导致此问题的less
选项是:LESS
-X
-X
或者--no-init
禁止将 termcap 初始化和取消初始化字符串发送到终端。如果取消初始化字符串执行了不必要的操作(如清除屏幕),则有时需要这样做。
我也学到了Unix 和 Linux – “less --quit-if-one-screen
无--no-init
”如果您禁用-X
/ --no-init
,则您也必须禁用-F
/ --quit-if-one-screen
(如果您已设置)。
要修复less
它,使其在退出时始终恢复您的屏幕,请LESS
在相应的 shell 初始化文件中更改 的值。这将.bashrc
适用于 Bash、.zshenv
Zsh 和.config/fish/config.fish
Fish。在此文件中,添加命令export LESS='<all the flags you want, without -X or -F>'
,或set -gx LESS <flags>
用于 fish。您可以事先运行以查看要复制到/语句echo $LESS
中的现有标志。export
set
答案3
我明白了!我所要做的就是设置$TERM
为xterm
。以前是linux
export TERM=xterm
谢谢你的链接和提示,大卫!