在OS X上觸發時,我產生用於系統的組的ctags包括使用下面的命令:Vim的自動完成只能當彈出被手動
ctags -f c -h ".h" -R --c-kinds=+p --fields=+iaS --extra=+q /usr/include
這是的~/.vim/ctags/
內運行目錄,我把我爲系統範圍的頭文件生成的所有ctags(我也有用於有條件地加載的ROS和CPP的東西,但這不是在那裏或那裏)。
無論如何。 ctags文件在我的.vimrc中正確設置,vim可以看到ctags,但由於某些原因,如果我寫出整個符號並開始退格,自動完成彈出窗口將僅顯示#include
d頭文件的結果。舉個例子,如果我在一個項目中使用#include <string.h>
,然後我打電話給strlen()
,並且我開始輸入str
進入活動的vim緩衝區,那麼我只會得到當前在vim緩衝區中的符號的結果。但是,如果我輸入strlen
,然後開始後退一個或兩個字符並擊中<C-n>
,則彈出菜單將填充來自其他任何包含的頭文件的匹配項。
編輯:原來,如果我只是擊中「s」然後<C-n>
,它也可以。所以這個問題似乎只有在手動啓動彈出式菜單時才起作用。這讓我覺得,這是一個插件的問題(見下文)
其他信息:
completeopt
設置爲completeopt=menuone,menu,preview,longest
我有OmniCppComplete,我想可能與被幹擾行爲。目前只有而不是被有條件地加載用於C++文件。如果您希望我編輯併發布我的.vimrc中的OmniCppComplete設置,只需詢問。
我也有AutoComplPop安裝,但我沒有做任何事情來配置它,所以它的默認設置運行。還沒有真正研究這個插件,所以不知道它的一些行爲是否會干擾結果。
我老老實實相當新的Vim的,我只是不知道從哪裏開始調試這個問題,無論是用隨機插件或我的.vimrc設置。
此問題似乎是AutoComplPop沒有爲C和C++文件定義的內置行爲,並且無論如何,它都回退到使用''。 ''當我在C文件中使用它時,會返回一個找不到模式的錯誤,所以現在我只是禁用AutoComplPop並使用''來得到最小的特定結果。我將不得不做更多的研究和試驗。感謝您指點我正確的方向! –
''調用一個你沒有的自定義函數,因此出錯。我也使用ACP。它不支持JavaScript,所以我修改了它。實際上,即使對於那時候的noob,也很容易。看到[這裏](https://github.com/romainl/dotvim/blob/master/bundle/autocomplpop/plugin/acp.vim#L33)和其他地方。 –
romainl
感謝您的鏈接。我得到''的錯誤,但我仍然認爲這意味着在我的vim運行時中不存在響應C文件中給定模式的函數。不過,我會看看如果我不能基於配置來擺弄AutoComplPop。看起來很瑣碎。我唯一的問題是,你是如何創建'acp#meetsForJavaScriptOmni'?我瞭解的其他一切。 –