NeoComplCache有谁在使用了?

193 views
Skip to first unread message

Asins

unread,
Feb 28, 2010, 9:53:52 PM2/28/10
to vim...@googlegroups.com
昨天在牧码志的blog上看到有关NeoComplCache的介绍,发现这正是我想要的,也正是最近为修改大文件效率低下而烦恼的问题。

看了一遍文档,发现这个插件的功能比较细致,大概有以下一些特点:

1、使用缓存,自动补全时效率高;
2、生成的关键词列表准确;
3、支持下划线分割的关键词,如apple_boy_cat,就可以只输入a_b_c,然后补全;
4、支持驼峰格式匹配关键词,如AppleBoyCat,就可以只输入ABC,然后补全;
5、既可以像AutoComplPop那样在Vim中输入的同时自动弹出补全列表,又可以自定义快捷键手动触发;
6、支持从文件名和目录名中匹配补全条件;
7、对于程序源文件,支持从语言API中匹配补全条件;


的确,在使用时明显感觉效率果然快很多。而且我还发现NeoComplCache支持Sinppet,其插件包里也包含了些sinppet文件,在输入时也能提示sinppet的名称,这点我很喜欢,并不所有的sinppet缩写都记得的,有这提示就很方便了。

但我不知如何才能调出来使用,输入完sinppet中设置好的关键字再按Tab键无用,SinpMate我已经删除掉了,不可能是冲突的问题。也找不到说明文档,这让我很郁闷,有好的功能但却没有说明如何使用。

不知有同样使用NeoComplCache的吗?介绍下NeoComplCache如何使用sinppet吧!

Ricky

unread,
Mar 1, 2010, 6:07:26 AM3/1/10
to vim...@googlegroups.com
看着挺不错的,有空研究下
--
要退订此论坛,请发邮件至 Vim-cn-un...@googlegroups.com
更多选项,请通过 http://groups.google.com/group/Vim-cn 访问该论坛

Ricky WU

unread,
Mar 3, 2010, 12:46:32 AM3/3/10
to Vim.cn

Ricky WU

unread,
Mar 3, 2010, 12:47:31 AM3/3/10
to Vim.cn
我试过sinppet功能,可以用的
.vimrc中加入
" Plugin key-mappings.
imap <silent><C-K> <Plug>(neocomplcache_snippets_expand)
smap <silent><C-K> <Plug>(neocomplcache_snippets_expand)
帮助中也有这几行

这个插件的sinppet不太好理解:
snippet if
abbr if () {}
if (${1:/* condition */}) {
${0:/* code */}
}

snippet ifelse
abbr if () {} else {}
if (${1:condition}) {
${2}
} else {
${3}
}

snippet else
else {
${0}
}
当中的$0不知道有什么用
------------------

On 3月1日, 上午10时53分, Asins <asinsim...@gmail.com> wrote:
> 昨天在牧码志的blog上看到有关NeoComplCache<http://www.vim.org/scripts/script.php?script_id=2620>

Asins

unread,
Mar 3, 2010, 4:47:20 AM3/3/10
to vim...@googlegroups.com
$0到是很多sinppet插件都是这种写法,理解起来不难吧!

默认光标是停留在${1}上的,当按下Tab键后可以跳到$(2)上,就是这个功能!

2010/3/3 Ricky WU <rich...@live.com>

Ricky WU

unread,
Mar 3, 2010, 4:48:51 AM3/3/10
to Vim.cn
$1,$2知道,那$0有什么区别
-----------

On 3月3日, 下午5时47分, Asins <lwky...@gmail.com> wrote:
> $0到是很多sinppet插件都是这种写法,理解起来不难吧!
>
> 默认光标是停留在${1}上的,当按下Tab键后可以跳到$(2)上,就是这个功能!
>

> 2010/3/3 Ricky WU <richi...@live.com>

Asins

unread,
Mar 3, 2010, 4:50:40 AM3/3/10
to vim...@googlegroups.com
这样写方便后面加默认值啊,如${2:defults}

2010/3/3 Ricky WU <rich...@live.com>

Asins

unread,
Mar 3, 2010, 4:51:49 AM3/3/10
to vim...@googlegroups.com
再问下我想将这快捷键指定为Tab键,Tab对应是怎么写的?

Ricky WU

unread,
Mar 3, 2010, 4:52:26 AM3/3/10
to Vim.cn
我的意思是

if (${1:/* condition */}) {
${0:/* code */}
}
这个光标是停留在$1,那为什么不用$2,而用的$0
------------

On 3月3日, 下午5时50分, Asins <lwky...@gmail.com> wrote:
> 这样写方便后面加默认值啊,如${2:defults}
>

> 2010/3/3 Ricky WU <richi...@live.com>

Asins

unread,
Mar 3, 2010, 4:54:24 AM3/3/10
to vim...@googlegroups.com
${0}指的是最后一个,但为什么要这样设置就不得而知了,不光VIM中是这样,我以前使用的Emeditor的sinppet插件语法也是这样的

2010/3/3 Ricky WU <rich...@live.com>

Ricky WU

unread,
Mar 3, 2010, 4:56:35 AM3/3/10
to Vim.cn
<TAB>
我试过用<TAB>会有点问题,当想输入<TAB>就没法输入了,这个应该可以修改插件解决
---------

On 3月3日, 下午5时51分, Asins <lwky...@gmail.com> wrote:
> 再问下我想将这快捷键指定为Tab键,Tab对应是怎么写的?
>

> 在 2010年3月3日 下午5:50,Asins <lwky...@gmail.com>写道:
>
> > 这样写方便后面加默认值啊,如${2:defults}
>

> > 2010/3/3 Ricky WU <richi...@live.com>

Ricky WU

unread,
Mar 3, 2010, 4:58:05 AM3/3/10
to Vim.cn
比如snippetEmu在空格后输入<TAB>会插入一个<TAB>,只有在前面的字符符合snippet规则才会展开
而这个插件没有解决这个冲突
-----------------

On 3月3日, 下午5时51分, Asins <lwky...@gmail.com> wrote:

> 再问下我想将这快捷键指定为Tab键,Tab对应是怎么写的?


>
> 在 2010年3月3日 下午5:50,Asins <lwky...@gmail.com>写道:
>
> > 这样写方便后面加默认值啊,如${2:defults}
>

> > 2010/3/3 Ricky WU <richi...@live.com>

Asins

unread,
Mar 3, 2010, 8:03:22 AM3/3/10
to vim...@googlegroups.com
是啊,我刚在使用时也发现这样的问题,以后的版本应该会改进。

总的来说还是不错的,提示功能很强大,但在打开大文字时Cache感觉有点慢,不过不到不是问题,总比输入字符根打字机特效样的好。

我还发现一个bug,比如JS的sinppet
snippet for
for (var ${2:i}=0; ${2:i} < ${1:Things}.length; ${2:i}++) {
${0}
};
在将${2:i}改为别的字符后,另外两处的${2:i}不会根着变,这有点郁闷!

2010/3/3 Ricky WU <rich...@live.com>

Ricky

unread,
Mar 3, 2010, 8:17:32 AM3/3/10
to vim...@googlegroups.com
效率和准确度上比autocomlpop高,我已经扔掉autocomlpop了.
Cache慢应该可以通过设置解决,不过文档不详细,得慢慢研究
我补全文件名的时候,当文件特别多仍然会没反应
---------------

Ricky WU

unread,
Apr 27, 2010, 3:48:59 AM4/27/10
to Vim.cn
我在Gvim可以自动弹出补全菜单,但是cygwin的控制台模式就没法自动弹出了,插件哪里可以控制这个?

On 3月1日, 上午10时53分, Asins <asinsim...@gmail.com> wrote:
> 昨天在牧码志的blog上看到有关NeoComplCache<http://www.vim.org/scripts/script.php?script_id=2620>

Asins

unread,
Apr 27, 2010, 4:45:43 AM4/27/10
to vim...@googlegroups.com
需要在你的配置里加入let g:AutoComplPop_NotEnableAtStartup = 1
才会自动弹出的,以下是我对这插件的设置

"-----------------------------------------------------------------
" plugin - NeoComplCache.vim    自动补全插件
"-----------------------------------------------------------------
let g:AutoComplPop_NotEnableAtStartup = 1
let g:NeoComplCache_EnableAtStartup = 1
let g:NeoComplCache_SmartCase = 1
let g:NeoComplCache_TagsAutoUpdate = 1
let g:NeoComplCache_EnableInfo = 1
let g:NeoComplCache_EnableCamelCaseCompletion = 1
let g:NeoComplCache_MinSyntaxLength = 3
let g:NeoComplCache_EnableSkipCompletion = 1
let g:NeoComplCache_SkipInputTime = '0.5'
let g:NeoComplCache_SnippetsDir = $VIMFILES.'/snippets'
" <TAB> completion.
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" snippets expand key
imap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)
smap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)

可能也有不对的地方,$VIMFILES是我根据系统指定vimfiles的路径,当然你可以不要一这么

Ricky WU

unread,
Apr 27, 2010, 4:53:00 AM4/27/10
to Vim.cn
我的cygwin vim和gvim共享同一个vimrc
问题在于gvim可以自动弹出,vim不可以

这一行应该是让AutoComplPopup关闭,不过我删掉了这个插件
你看我的设置,加上了这一行也不行

let g:AutoComplPop_NotEnableAtStartup = 1
let g:NeoComplCache_EnableAtStartup = 1
let g:NeoComplCache_SmartCase = 1
" Use camel case completion.
let g:NeoComplCache_EnableCamelCaseCompletion = 1
" Use underbar completion.
let g:NeoComplCache_EnableUnderbarCompletion = 1
let g:NeoComplCache_MinSyntaxLength = 3
" Set minimum keyword length.
let g:NeoComplCache_MinKeywordLength = 3
let g:NeoComplCache_CachingPercentInStatusline = 1
let g:NeoComplCache_DisableSelectModeMappings = 1
let g:NeoComplCache_EnableSkipCompletion = 1


闲耘(tm)

unread,
Apr 27, 2010, 5:25:58 AM4/27/10
to vim-cn
请问 neo 怎么设置默认选中第一个菜单项?

--
闲耘™ (@hotoo, xianyun.org)


2010/4/27 Ricky WU <rich...@live.com>

Ricky WU

unread,
Apr 27, 2010, 10:51:44 PM4/27/10
to Vim.cn
没找到相关选项
如果默认选中第一个,你输入行的当前内容就会被改变,不是你需要的话就很麻烦了

On 4月27日, 下午5时25分, 闲耘(tm) <hotoo...@gmail.com> wrote:
> 请问 neo 怎么设置默认选中第一个菜单项?
>
> --
> 闲耘(tm) (@hotoo, xianyun.org)
>
> 2010/4/27 Ricky WU <richi...@live.com>

闲耘(tm)

unread,
Apr 27, 2010, 10:59:58 PM4/27/10
to vim...@googlegroups.com
AutoComplPop 就是默认选中(或者说高亮)第一个的,只有在回车之后才会应用补全文本。
如果第一项不符合要求,不使用回车就好了。如果此时一定要回车换行,可以 <Esc>o 来完成。
这在高速编辑的时候非常有用,因为补全(尤其是当前缓冲区单词补全)的命中率还是很高的,
即使不高,也可以通过优化算法来提高命中率,但是这个特性本身可以很大程度上提高编辑效率。

--
闲耘™ (@hotoo, xianyun.org)


2010/4/28 Ricky WU <rich...@live.com>

Ricky WU

unread,
Apr 28, 2010, 6:22:54 AM4/28/10
to Vim.cn
我在用AutoComplPop的时候不知道可以<Esc>o
这个特性貌似挺有用的,你可以发封信,让作者考虑加上

On 4月28日, 上午10时59分, 闲耘(tm) <hotoo...@gmail.com> wrote:
> AutoComplPop 就是默认选中(或者说高亮)第一个的,只有在回车之后才会应用补全文本。
> 如果第一项不符合要求,不使用回车就好了。如果此时一定要回车换行,可以 <Esc>o 来完成。
> 这在高速编辑的时候非常有用,因为补全(尤其是当前缓冲区单词补全)的命中率还是很高的,
> 即使不高,也可以通过优化算法来提高命中率,但是这个特性本身可以很大程度上提高编辑效率。
>
> --

> 闲耘(tm) (@hotoo, xianyun.org)
>
> 2010/4/28 Ricky WU <richi...@live.com>

闲耘(tm)

unread,
Apr 28, 2010, 10:09:26 AM4/28/10
to vim-cn
作者不喜欢,被驳回了 :' (

--
闲耘™ (@hotoo, xianyun.org)


2010/4/28 Ricky WU <rich...@live.com>

Ricky WU

unread,
Apr 28, 2010, 10:31:24 PM4/28/10
to Vim.cn
那就<C-N>吧,会多按个键,呵呵

On 4月28日, 下午10时09分, 闲耘(tm) <hotoo...@gmail.com> wrote:
> 作者不喜欢,被驳回了 :' (

Liang Guodong

unread,
Apr 27, 2010, 5:40:49 AM4/27/10
to vim...@googlegroups.com
默认选中第一个,你还有办法输入吗?

闲耘(tm)

unread,
May 8, 2010, 11:36:32 PM5/8/10
to vim...@googlegroups.com
试试 autocomplpop 你就知道了。
--
闲耘™ (@hotoo, xianyun.org)


2010/4/27 Liang Guodong <name...@gmail.com>
默认选中第一个,你还有办法输入吗?

Verdana

unread,
Jun 27, 2010, 10:04:20 AM6/27/10
to Vim.cn
好像4.3 和最新的5.0版本都已经有这个功能了,自动选中第一项
let g:neocomplcache_enable_auto_select, 貌似是这个记不清楚了, 去查下文档吧~

偶已经删掉了这个插件, 无它, 对我来说性能太糟糕, 安装了这个插件以后, 输入延迟变得很严重, 很影响心情.
我用的 macvim , 最近换成了 vim-cocoa, 症状相同.

On 4月28日, 下午10时09分, 闲耘(tm) <hotoo...@gmail.com> wrote:
> 作者不喜欢,被驳回了 :' (
>

Ricky WU

unread,
Jun 28, 2010, 12:29:38 AM6/28/10
to Vim.cn
我觉得很快啊,可能你path路径里包含的文件太多了
我也遇到过这个问题,130K的文件量变得非常慢,关掉文件名完成就好了

Agassi

unread,
Jun 28, 2010, 1:23:29 AM6/28/10
to vim...@googlegroups.com
我很想知道如何能做到是指定的文件类型开启neocomplcache。
因为一些文本文件根本不需要提示。
而如果是python,java,c这个的文件我又需要在打开的时候开启neocomplcache。



2010/6/28 Ricky WU <rich...@live.com>

Ricky WU

unread,
Jun 28, 2010, 1:40:49 AM6/28/10
to Vim.cn
> 我很想知道如何能做到是指定的文件类型开启neocomplcache。
> 因为一些文本文件根本不需要提示。
> 而如果是python,java,c这个的文件我又需要在打开的时候开启neocomplcache。

好像没有这功能,或者你问问作者吧
如果菜单弹出降低了编辑效率可以把菜单高度降低

robertgo

unread,
Jul 9, 2010, 12:19:46 AM7/9/10
to Vim.cn
准备试用,看效率如何
Reply all
Reply to author
Forward
0 new messages