我刚刚在Linux服务器上编译了vim 7.2(在我的用户目录中,因为服务器安装了vim 6,我想升级但没有root权限)。
当我输入“vim”时,它在启动时挂起而没有任何响应,但是当我从另一个ssh窗口调用“killall vim”时,启动完成并且vim似乎在此之后工作正常。为什么会这样,我该如何解决?
非常感谢您的回复。
答案 0 :(得分:18)
好吧,我找到了答案:
:help -X
显示Vim尝试在启动时连接到X11服务器以获取剪贴板功能和其他内容,这可能导致“在终端仿真器中运行Vim时的长启动时间并且与X服务器的连接速度很慢”< / p>
有三种方法可以解决此问题:
vim -X
”启动Vim会禁用此X11通信unset DISPLAY
”也会禁用X11通信+X11
”功能的情况下编译Vim,则不会进行此通信我选择了“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
解决了问题。