Vim 7.2在启动时挂起,“killall vim”修复了它

时间:2009-08-21 03:56:45

标签: vim

我刚刚在Linux服务器上编译了vim 7.2(在我的用户目录中,因为服务器安装了vim 6,我想升级但没有root权限)。

当我输入“vim”时,它在启动时挂起而没有任何响应,但是当我从另一个ssh窗口调用“killall vim”时,启动完成并且vim似乎在此之后工作正常。为什么会这样,我该如何解决?

非常感谢您的回复。

5 个答案:

答案 0 :(得分:18)

好吧,我找到了答案:

:help -X

显示Vim尝试在启动时连接到X11服务器以获取剪贴板功能和其他内容,这可能导致“在终端仿真器中运行Vim时的长启动时间并且与X服务器的连接速度很慢”< / p>

有三种方法可以解决此问题:

  1. 使用“vim -X”启动Vim会禁用此X11通信
  2. 调用“unset DISPLAY”也会禁用X11通信
  3. 如果在没有“+X11”功能的情况下编译Vim,则不会进行此通信
  4. 我选择了“unset DISPLAY”,因为我收到了其他奇怪的错误消息,现在vim立即启动。我还测试了-X参数,它也解决了这个问题(即使仍然设置了DISPLAY参数)。

答案 1 :(得分:5)

strace vim可能会告诉你这是什么。

答案 2 :(得分:2)

vim在启动时挂起的另一个常见原因是它试图访问GPM(即:自定义字体等)。在我的情况下,我有相同的症状,但它最终成为与GPM鼠标相关的问题。

在我的.vimrc中添加以下内容(来自:http://www.linuxquestions.org/questions/slackware-14/vim-freeze-at-startup-when-in-ssh-session-856606/)修复了VIM的挂起启动问题。

" This section is bigger in my .vimrc, this is just an excerpt.
if has('gui_running')
  " Mouse on GUI comes handy.
  set mouse=a
else
  set mouse=
endif

希望这有助于其他读者:•

答案 3 :(得分:0)

与上面提到的vim在尝试访问GPM时挂起的情况相关,您可以使用strace判断是否是这种情况。首先在一个终端/控制台中运行vim,使其挂起

vim

然后转到另一个终端,获取PID并将其拉直

$> pgrep vim                        
32502

$> strace -p 32502
Process 32502 attached - interrupt to quit
connect(4, {sa_family=AF_FILE, path="/dev/gpmctl"...}, 13

所以我们有一个GPM案例。只需重新启动GPM服务,我们就可以了。

$> service gpm restart
Shutting down console mouse services:                      [  OK  ]
Starting console mouse services:                           [  OK  ]

答案 4 :(得分:0)

使用strace vim查找错误给了我:

.vim / bundle / Vundle.vim&#34;,{st_mode = S_IFDIR | 0755,st_size = 4096,...})= 0 getdents(4,/ * 0条目* /,32768)= 0 close(4)= 0 --- SIGSEGV(分段故障)@ 0(0)---

因此删除Vundle.vim解决了问题。