2013-04-26 62 views
5

我會有一個自動完成在崇高的文本,但在VIM中。使用Vim中的代碼完成作爲崇高的文本

我想這種行爲:

  • 當我開始鍵入一個字,我想有一個盒子,其建議的完成;
  • 在建議的完成中,我想要使用最後一個單詞;
  • 我想通過ctags查找函數;
  • 我想要使用我正在使用的語言的標準功能;
  • 我想要有片段;

有很多關於vim自動完成的插件,我迷路了。

+3

歡迎來到Vim;它龐大的插件庫既是祝福也是詛咒;你發現了什麼,你喜歡什麼,一個功能對另一個功能有多重要?!最後,你不會自己嘗試一些插件;每個人的偏好都不一樣,在Vim中沒有一成不變的解決方案。 – 2013-04-26 09:00:37

回答

7

目前我正在使用YouCompleteMe ...這是非常好的,但我不知道它是否可以配置爲根據最後用法對單詞進行排序。它具有一般模糊完成功能,可以處理任何文件類型(您可能會發現模糊完成很棒),但它也包含通過libclang進行的C/C++/Objective-C/Objective-C++的語義完成。

特別是,我從源代碼編譯最新的clang,libC++和VIM來調整和設置VIM以使用我的環境python/ruby​​/etc並得到一個體面的C++ 11支持。然後,我也從源代碼編譯YouCompleteMe,儘管我首先通過插件管理器來安裝它。我目前的選擇是VAM,但也有其他人喜歡Vundle和病原體。

+0

我閱讀了關於YCM的文檔,並沒有看到任何關於片段的內容。我看到了這一行「YCM淘汰了以下Vim插件,因爲它具有所有的特性加上額外的:autocomplpop」但是在autocomplpop的文檔中,我看到了這一行「另外,您可以創建用戶定義的完成,並且snipMate的觸發完成自動彈出選項已設置。「我查看了YCM的源代碼,並沒有看到任何關於片段的內容。有沒有辦法用YCM支持片段? – Dougui 2013-04-26 18:55:28

+0

@Dougui最近我見過snippet支持。完成菜單中還列出了可能的片段,這通過UltiSnips集成完成,YCM幫助顯示可用片段,UltiSnips將提供它們。 http://stackoverflow.com/q/14896327,https://github.com/Valloric/YouCompleteMe/pull/257 – 2013-04-26 19:21:48

+0

是的,最近ultisnips的支持已經實施。 Ctags集成在待辦事項列表中,但尚未完成。我認爲這個插件確實與您想要的最接近。 – 2013-04-27 09:59:53

3

試試這個方法:

for plugin in plugins 
    try 
     install plugin 
     read doc 
     test plugin 
    catch 
     remove plugin 
    endtry 
endfor 

此外,請務必閱讀並追捕插件,然後明白:h ins-completion

+0

你的代碼在我的vim(v7.3)中不起作用!但我給你upvote! – Kent 2013-04-26 09:19:16

+0

呵呵,如預期。 – romainl 2013-04-26 10:09:46

+1

不要嘗試添加此代碼...閱讀它,你會明白。這是一個笑話。 – Dougui 2013-04-26 15:12:37