vim自动补全卡死

265 views
Skip to first unread message

Jian Cheng

unread,
Aug 16, 2011, 10:31:33 AM8/16/11
to Vim...@googlegroups.com
大家好,

有个问题一直困扰我。
每次我第一次打开gvim,调用Omni自动补全补全的时候<c-x><c-o>,总是会卡好一
会才能有反应。如果文件 很大的化(几千行),要1分钟以上。不过第一次卡完之
后,后面的就快了。这是可以重现的卡死。
除了这个,有时候还是会莫名奇妙卡半分钟左右,不知道原因。
如果文件比较小(100行以内),就没有问题。
各位能给点意见吗?
多谢!

Best,
Jian Cheng

李伟

unread,
Aug 16, 2011, 8:52:16 PM8/16/11
to vim...@googlegroups.com
我也遇到了此问题,可能是由于某些键冲突的原因吧。我<c-p>也会出现此问题。


--
要退订此论坛,请发邮件至 Vim-cn-unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/Vim-cn 访问该论坛

Eric Leung

unread,
Aug 16, 2011, 9:56:56 PM8/16/11
to Vim.cn
没有办法,因为第一次自动补全时会加载数据,单线程+vimscript本身就不算快。
第二个问题,如果不是大文件(十m以上)也卡的话,多半是插件的问题。
另外vim遇到长行,或者是频繁、大量嵌套子语言的文件,操作会有停顿感。
更搞的是,我的vim有时不知做了什么后,所有的文件的移动光标和插入模式的输入会有明显的停顿感,无论是新打开的还是文件比较小的,只能关了程序重新
打开。
简单来说就是,vim其实并没有那么神,习惯就好。

依云

unread,
Aug 16, 2011, 10:23:22 PM8/16/11
to vim...@googlegroups.com
On Tue, Aug 16, 2011 at 06:56:56PM -0700, Eric Leung wrote:
> 没有办法,因为第一次自动补全时会加载数据,单线程+vimscript本身就不算快。
> 第二个问题,如果不是大文件(十m以上)也卡的话,多半是插件的问题。
> 另外vim遇到长行,或者是频繁、大量嵌套子语言的文件,操作会有停顿感。
> 更搞的是,我的vim有时不知做了什么后,所有的文件的移动光标和插入模式的输入会有明显的停顿感,无论是新打开的还是文件比较小的,只能关了程序重新
> 打开。
> 简单来说就是,vim其实并没有那么神,习惯就好。

使用多线程是可能的,见
http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=341159

--
Best regards,
lilydjwg

Linux Vim Python 我的博客
http://lilydjwg.is-programmer.com/

Jian Cheng

unread,
Dec 5, 2011, 11:49:08 AM12/5/11
to yggdroot, Vim...@googlegroups.com
非常感谢!
我刚才测试了一下,path置空确实管用。
默认的path是.,/usr/include,用默认的也很快。
我发现一但加入了/usr/local/include之后就慢了,而这是:h path文档给的例
子,以前也没细想就加入了。
现在/usr/local/include里面东西太多了。。。
Onmi complete文档里面说
When OmniCpp_NamespaceSearch is 2, "using namespace" declarations are parsed
in the current buffer and also in included files. To find included
files, the
script use the vim env 'path', so you have to set it properly.

看来path不能加太多了,我现在只加/usr/include以及 /usr/local/include/下面
几个我用的子目录,而不假/usr/local/include,补全快了很多,第一次补全也不
卡了:)
感觉path用处不大阿,除了能gf进入include的头文件,没发现补全的时候有什么
用。而gf进入头文件我也怎么用过,都是通过插件直接找 到。
即时set path=空,我按<c-x><c-o>仍然能补全,和set很多目录进path一样。。。
不知道set path=空有何坏处?


On 12/05/2011 11:36 PM, yggdroot wrote:
> 我也遇到过类似的情况,后来发现可能是搜索路径的问题,我让set path=空,就不那么卡了,不知道能不能解决你的问题。


>
> On 8月16日, 下午10时31分, Jian Cheng<jian.cheng.1...@gmail.com> wrote:

yggdroot

unread,
Dec 5, 2011, 11:39:53 PM12/5/11
to Vim.cn
实际上我并没有把path置空,我只是在"function! omni#cpp#complete#Main(findstart, base)"里
面做了点修改,
进入函数的时候,
let myPath=&path
set path="",
离开的时候
let &path=myPath(不止一个地方)

> >> Jian Cheng- Hide quoted text -
>
> - Show quoted text -

Reply all
Reply to author
Forward
0 new messages