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燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP