自定义 cl termcap 导致 vim 在 gnu 屏幕内冻结

自定义 cl termcap 导致 vim 在 gnu 屏幕内冻结

我担心里面的终端滚动screen,而且我配置了altscreen on它只影响某些程序,在窗口之间切换时没有任何效果。

我知道printf '\ec'清除终端比Ctrl+L或普通clear命令更好,所以我决定应用它。

cl条目的默认 termcap与( ) 后跟( )\E[H\E[J相同,如果您在会话内,则可以获得此值。ho\E[Hcd\E[Jecho $TERMCAPscreen

我想知道更改cl为是否\Ec会产生我期望的效果,确实如此,干杯!但不幸的是它造成了巨大的副作用:箭头键在内部停止工作vim

我仍然可以使用HJKL键进行导航,因此我认为没有理由不使用箭头键。

我想避免更改,.vimrc因为它是由 引起的screen,并且我可以在会话vim内运行ssh,因此我必须更改.vimrc所有计算机的 。

这是我目前的.screenrc

vbell off
startup_message off
altscreen on
termcapinfo xterm* ti@:te@:cl=\Ec
#termcapinfo xterm* xn:hs@:cd=\E[J:ho=\E[H

我一直在尝试一些变体,有或没有ti等等,但问题似乎是cl它本身,如果它的价值是\E[H\E[J它的工作原理,否则就不行。

要重现问题,请使用上面的内容编写文件$HOME/.screenrc并使用例如启动会话screen -ADRS profile,然后尝试vim .screenrc,您会发现您将无法使用键盘上的键箭头进行导航,只能使用HJKL按键进行导航。

Screen version 4.03.01 (GNU) 28-Jun-15
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48)

是否有可能具有与清除相同的行为\Ec并保持vim工作?

注1:正如@schily所说,这不一定是termcap问题,但可能是一个问题terminfo,但无论哪种方式,我都termcapinfo在我的声明上使用根据手册对和.screenrc两者应用调整规则的声明,我不是 的专家,我只是想解决这个问题。 注意2:使用make 运行它可以工作,但正如我之前所说,我想避免更改. 注3:它也会影响,也可能影响其他,关于问题的另一项强制执行。termcapterminfotermcap/info
vim:set term=linux.vimrc
lessscreen
注4:我提交了一个错误:https://savannah.gnu.org/bugs/?54317

相关内容