Answers:
VIM发送t_ti
和t_ks
向所述终端当会话被启动和t_te
和t_ke
何时结束。的t_ti
和t_te
原因的末端序列切换到其备用屏幕。
在~/.vimrc
文件中,您可以vim
通过包含以下行使退出时在屏幕上保留文档:
set t_ti=""
如果您有与之类似的行,将其删除应使退出时显示先前的终端内容vim
。
导致此问题的原因可能是使用该程序screen
。我发现在screen
会话中vim无法返回终端状态。
不知道它是特定于屏幕还是Ubuntu 15.10中的screen / vim组合。与上述原因相同,我猜screen
有不同的termcap。
altscreen on
到〜/ .screenrc文件可解决屏幕问题。
只需在您的~/.bash_profile
文件中添加一行,即可在每次登录时将TERM导出为xterm。进行如下操作;
echo "TERM=xterm; export TERM" >> ~/.bash_profile
现在,下次您登录时,您的问题将得到解决,如果您不想重新登录,则可以执行以下一项操作:
// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile
export $TERM
吗?
export
将名称(例如,TERM
在这种情况下)导出为环境变量而不是局部变量。如果export $TERM
在此示例中使用过,那么$TERM
var将解析为xterm
您将设置env var $xterm
,可能未定义。不过,这是一个好问题,我也总是觉得这是错的。
蒂姆 以上两个答案都是正确的。如果$ TERM的termcap条目中定义了执行此操作的功能,则Vim会将终端切换到“备用屏幕”。
您说“在某些终端中(...工作正常...)”和“在其他终端中(...工作正常...”)
您是否为所有这些终端运行完全相同的终端仿真器?
例如,在我的家用Linux机器上,我拥有gnome-terminal,xterm,Konsole,yakuake,也许还有一些我已经忘记的东西,以及与ctrl-alt-F1相关的“虚拟终端” ... ctrl-alt-F6左右。其中大多数可以与“ xterm”的“标准” termcap条目一起使用-虚拟终端除外,虚拟终端的终端定义为“ linux”。
检查终端仿真器本身以及在工作的终端和不工作的终端上的$ TERM值,以了解有什么不同。另外,如果您有时以其他用户身份登录,这可能是问题的核心-由于每个用户都有自己的.bashrc,因此不同的设置可能因用户而异。
希望有帮助!
-pbr