我担心里面的终端滚动screen
,而且我配置了altscreen on
它只影响某些程序,在窗口之间切换时没有任何效果。
我知道printf '\ec'
清除终端比Ctrl+L
或普通clear
命令更好,所以我决定应用它。
cl
条目的默认 termcap与( ) 后跟( )\E[H\E[J
相同,如果您在会话内,则可以获得此值。ho
\E[H
cd
\E[J
echo $TERMCAP
screen
我想知道更改cl
为是否\Ec
会产生我期望的效果,确实如此,干杯!但不幸的是它造成了巨大的副作用:箭头键在内部停止工作vim
。
我仍然可以使用H
、J
、K
和L
键进行导航,因此我认为没有理由不使用箭头键。
我想避免更改,.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:它也会影响,也可能影响其他,关于问题的另一项强制执行。termcap
terminfo
termcap/info
vim
:set term=linux
.vimrc
less
screen
注4:我提交了一个错误:https://savannah.gnu.org/bugs/?54317