Editor 板


LINE

※ 引述《dryman (dryman)》之铭言: : 转贴自 http://sinolog.it/?p=1399 帮你转正体重贴, 请多爱用chrome extension 同文堂, single click就可以转. ---------------------------------------------------------------------- Vim的终极自动补全插件:NeoComplCacheVim的终极自动补全插件:NeoComplCache 2010年02月27日 星期六 , 1,798 次点击 关於自动补全,最初用的是SuperTab,那个时候Vim的自动补全插件寥寥无几,也就 SuperTab比较有名。不过实际使用过程中这个插件给我的体验不是很好,原因是补全的准 确度不高。 後来出了一个新插件,AutoComplPop,功能和使用都很简单。但是很快我就又用回 SuperTab,原因是AutoComplPop在输入的同时实时地查询匹配的关键词,导致输入极不流 畅,效率很低。 一直就这麽凑合着用着SuperTab,随着这个插件版本的更新,旧功能不断地完善,新功能 也接二连三地引入,SuperTab在匹配关键词的准确度上有了一些改善,但是新的问题又出 现了。SuperTab後来加入一个新功能,对於程序源文件,可以在其引入的文件以及API文 件中匹配关键词。比如假设我当前正在编辑a.php,在a.php中有include 『b.php';这样 的语句,当我输入array并按下Tab键时,SuperTab不但会在当前文件中查询所有匹配项, 还会到b.php中查询,如果配置过vim、指定一个包含了php的API的文件,则SuperTab还会 自动从这个文件中查询匹配项。按理说这个功能的理念很好,但问题就在於SuperTab做的 是实时查询,如果源文件中包含的文件较多,各个文件又较大,问题就显而易见了。我不 得不在写程序时小心地使用Tab键,否则有时就会出现按一下Tab键然後等着Vim在那狂搜 的情况。 前两天发现了NeoComplCache,光看名字就让我有点儿兴奋,一般使用缓存的速度都很快 。这个插件会在Vim打开文件的时候对上下文作一个索引,并把索引结果保存到缓存中。 同时,文件更改的内容会在保存的时候被索引。此外,NeoComplCache支持多种关键词索 引模式,例如它会判断当前路径下的文件或目录的名字是否匹配补全条件,也可以从缓存 的程序语言API中匹配补全条件。到此为止,它就解决了SuperTab和AutoComplPop共同的 效率问题,并具备它们各自的长处。看了一遍文档,发现这个插件的功能比较细致,大概 有以下一些特点: 1、使用缓存,自动补全时效率高; 2、生成的关键词列表准确; 3、支持下划线分割的关键词,如apple_boy_cat,就可以只输入a_b_c,然後补全; 4、支持驼峰格式匹配关键词,如AppleBoyCat,就可以只输入ABC,然後补全; 5、既可以像AutoComplPop那样在Vim中输入的同时自动弹出补全列表,又可以自定义快捷 键手动触发; 6、支持从文件名和目录名中匹配补全条件; 7、对於程序源文件,支持从语言API中匹配补全条件; NeoComplCache的缺点是文档不全,虽然从只言片语中发现它还支持Snippet,但从文档中 没有找到足够的有用信息。加之一直用SnipMate感觉不错,所以目前还是用它来实现 snippet功能。 这就有个搭配问题:虽然NeoComplCache不存在补全时的效率问题,但我仍然打算只在需 要补全时才用快捷键触发此功能,最主要的原因是我既希望用Tab键触发SnipMate的代码 块补全功能,又希望修SuperTab那样用Tab选择补全列表中的选项。也就是要达到只用Tab 键就可以完成打开自动补全列表、补全列表选项选择和SnipMate代码块替换的效果。但是 ,如果将Tab映射到触发自动补全,则补全列表选择和SnipMate均无法使用Tab,反之亦然 。 所以我想如果能让NeoComplCache、SuperTab、SnipMate和谐共存,那问题就解决了,几 经摸索,终於找到了办法: 1、设置NeoComplCache不自动弹出补全列表,即在vimrc中加入: let g:NeoComplCache_DisableAutoComplete = 1 2、由於NeoComplCache在手工模式下使用快捷键组合<C-X><C-U>打开补全列表,故设置 SuperTab的默认补全操作为<C-X><C-U>,即在vimrc中加入: let g:SuperTabDefaultCompletionType = 『<C-X><C-U>『 这样,NeoComplCache只负责补全关键词缓存的生成,SuperTab控制Tab键的行为并在需要 触发补全操作时打开补全列表、进而在列表中的选项间移动焦点,而当光标前的关键词是 snippet时,SnipMate会被优先调用并完成代码块的替换。 就在写这篇文章的时候,我突然觉得NeoComplCache自动弹出补全列表+SnipMate的方式也 挺好,只是这样就不能用Tab键选择列表中的选项了。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.193.248.49







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP