vim

最近在 某台服务器上启动vi时,总出现vi没有响应的情况。 现象是输入vi 命 令后,vi窗口显示不出来,并且此时终端也没有响应,不能输入任何命令。只能用ssh再登录一个终端,在新登录终端上使用kill 命令杀死此vi进程,此时运行vi的终端中显示如下信息:

*** info [lib/liblow.c(329)]:
/dev/gpmctl: Interrupted system call
*** err [lib/liblow.c(336)]:
/dev/gpmctl: No such device or address
Vim: Caught deadly signal TERM
Vim: Finished.
Terminated

在偶然中发现,使用putty登录这台服务器时,运行vi 命 令没有问题。因此怀疑和TERM 环境变量的设置有关。检查putty中 此环境变量:

$ echo $TERM
xterm

而在vi没响应的终端里,TERM环境变量的值为:

$ echo $TERM
linux

如果把TERM环境变量的值也改成xterm ,那么vi可以正 常启动。看来的确是TERM环境变量引起的这个问题。后来又发现,如果在linux screen中启动vim的话(此时TERM环境变量的值为screen ),vim也不能正常启动。

那么为什么TERM环境变量的取值会影响vim的启动呢?经过认真排查,终于把问题定位到vimrc中的一个设置上:

set mouse=a 

如果在.vimrc中设置了set mouse=a , 那么在TERM环境变量为linux或screen的终端上,vi启动时就会没有反应;如果去掉这个设置,不管TERM环境变量的取值是什么,vi都能正 常启动。

阅读了vim的帮助手册,手册中说,这个选项只在一些特定类型的终端上支持,比如xterm、使能了gpm的linux终端等。看来问题是出在gpm上, 从上面vim被kill后的打印中也可以看出,是/dev/gpmctl设备无法访问导致vi失去反应的。

后来在vimrc中把set mouse=a 一 句去掉,vi终于正常了。如果有其它朋友也遇到类似的问题,不妨试一下上述解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值