vim 用YCM 插件怎樣自動補全庫里的函數名和類名?

比如我要補全STL,#include&之後,我希望自己定義的對象能自動補全push_back()和pop_back()等函數,這個YCM能做到嗎?


你自己沒有配置正確吧?需要設置你編譯器的 include文件夾在哪裡它才能調用clang幫你分析,

YCM做這個是小意思,

我這裡敲入 std:: 立馬 std namespace下面的東西就出來了

定義了一個字元串 vector strings, strings 後面打一個點,出現 vector的成員:

strings[0] 後面打一點,出現 std::string 的成員:

自己定義一個類,再裝到 vector 裡面,引用的時候它一樣能識別出來你自定義類里是些什麼


可以的,ctrl+空格補全。一定要按下才能觸發語義補全。


很容易的。。不用扔掉。。

如果想全局使用,在~/.ycm_extra_conf.py加入你的庫的header,例如-I/path/to/include

只想在當前目錄臨時使用的話就在當前目錄另開一個.ycm_extra_conf.py就好了


題主是想補全全局函數吧?

ycm默認是要輸入.和-&>之後才會觸發自動補全的,可以在vimrc中指定

let g:ycm_key_invoke_completion = "&"

這樣輸入的時候按一下F9就啟動補全列表,可以補全所有全局函數

怎麼自動開啟這個功能我沒有找到……期待有人完善……


扔掉換成clion,沒錢的話可以用vscode


昨天我也在找這個問題的解決方案。

這是由於YCM默認必須通過輸入".","-&>","::"來觸發補全,所以輸入全局函數比如ptintf是不會補全的,而默認快捷鍵"ctrl+空格"可以在任何情況下觸發補全,可以解決這個問題。

不過在ubuntu下"ctrl+空格"用於切換輸入法,可以通過修改.vimrc中的該觸發快捷鍵來修正這個衝突。


這個回答你不滿意的話我吃翔。前提是你了解github聽過vimrc以及插件概念。谷歌bing百度搜索ultimate vimrc github 進入你要的網址直接read readme.md 如圖。我這個回答一定是比所有其他答主的更 friendly


Completion doesn"t work with the C++ standard library headers

This is caused by an issue with libclang that only affects some operating systems. Compiling with clang the binary will use the correct default header search paths but compiling with libclang.so (which YCM uses) does not.

Mac OS X is normally affected, but there"s a workaround in YCM for that specific OS. If you"re not running that OS but still have the same problem, continue reading.

The workaround is to call echo | clang -v -E -x c++ - and look at the paths under the #include &<...&> search starts here: heading. You should take those paths, prepend -isystem to each individual path and append them all to the list of flags you return from your FlagsForFile function in your .ycm_extra_conf.py file.

See issue #303 for details.

以上引用自github上ycm項目簡介,僅供學習交流。windows下有裝gcc的話也可這麼做,如果是vs的話用vs建立一個簡單的c++項目,把其包含的頭文件目錄加進去。


vim智能補全插件YouCompleteMe新手完全攻略_linux吧_百度貼吧

能不用還是不用吧……


這種時候其實應該說RTFM。

不過如果你有使用構建工具的話,github上有一個叫YCM-Generator的插件,可以根據構建工具自動生成.ycm_extra_conf.py文件。


ycm 的補全是需要激活的,默認應該是 . 和 -&>,你可以試試,函數參數,各種全局變數什麼的全都有。

然後,這個不方便的,可以在 vimrc 配置里改成其他快捷鍵。


按個Tab會出現待選項的函數列表吧


推薦閱讀:

對於非編程的文本編輯,Emacs和Vim各有什麼優勢?
vim和exvim的區別?
如何用 Vim 重構代碼?
Mac OS X Lion 下 Vi 怎麼回到行首/行尾以及 page up/page down 呢?
在 Vim 中移動游標需要先切換模式,是否很麻煩?

TAG:編程 | Ubuntu | Vim | CC | Vim插件 |