如何让shell在退出Vim等全屏进程后返回上一行

如何让shell在退出Vim等全屏进程后返回上一行

我连接到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、.zshenvZsh 和.config/fish/config.fishFish。在此文件中,添加命令export LESS='<all the flags you want, without -X or -F>',或set -gx LESS <flags>用于 fish。您可以事先运行以查看要复制到/语句echo $LESS中的现有标志。exportset

答案3

我明白了!我所要做的就是设置$TERMxterm。以前是linux

export TERM=xterm 

谢谢你的链接和提示,大卫!

相关内容