YCM的使用


YCM大概用來做3件事:

(1)自動補全

(2)檢查語法

(3)跳轉到函數定義

然后涉及到兩個關鍵的文件.vimrc 和 .ycm_extra_conf.py 

 

首先需要正確的配置,在.vimrc中寫入,

" YouCompleteMe
" Python Semantic Completion
let g:ycm_python_binary_path = '/usr/bin/python3'
" C family Completion Path
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
" 跳轉快捷鍵
nnoremap <c-k> :YcmCompleter GoToDeclaration<CR>|
nnoremap <c-h> :YcmCompleter GoToDefinition<CR>|
nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>|
" 停止提示是否載入本地ycm_extra_conf文件
let g:ycm_confirm_extra_conf = 0
" 語法關鍵字補全
let g:ycm_seed_identifiers_with_syntax = 1
" 開啟 YCM 基於標簽引擎
let g:ycm_collect_identifiers_from_tags_files = 1
" 從第2個鍵入字符就開始羅列匹配項
let g:ycm_min_num_of_chars_for_completion=2
" 在注釋輸入中也能補全
let g:ycm_complete_in_comments = 1
" 在字符串輸入中也能補全
let g:ycm_complete_in_strings = 1
" 注釋和字符串中的文字也會被收入補全
let g:ycm_collect_identifiers_from_comments_and_strings = 1
" 彈出列表時選擇第1項的快捷鍵(默認為<TAB>和<Down>)
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
" 彈出列表時選擇前1項的快捷鍵(默認為<S-TAB>和<UP>)
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
" 主動補全, 默認為<C-Space>
"let g:ycm_key_invoke_completion = ['<C-Space>']
" 停止顯示補全列表(防止列表影響視野), 可以按<C-Space>重新彈出
"let g:ycm_key_list_stop_completion = ['<C-y>']
let g:ycm_semantic_triggers =  {
\   'c,cpp,python,java,go,erlang,perl':['re!\w{2}'],
\   'cs,lua,javascript':['re!\w{2}'],
\}
"ycm默認需要按ctrl + space 來進行補全,可以在上面的花括號里面加入下面兩行代碼來直接進行補全[不需要按鍵]

let g:ycm_add_preview_to_completeopt = 0
"關閉函數原型提示

 

.ycm_extra_conf.py 如下:

flags = [
'-Wall',
'-Wextra',
'-Werror',
'-Wno-long-long',
'-Wno-variadic-macros',
'-fexceptions',
'-DNDEBUG',
'-std=c99',
'-x',
'c',
'-I',
'/usr/include',
'-isystem',
'/usr/lib/gcc/x86_64-linux-gnu/5/include',
'-isystem',
'/usr/include/x86_64-linux-gnu',
'-isystem'
'/usr/include/c++/5',
'-isystem',
'/usr/include/c++/5/bits'
]
def FlagsForFile(filename):
    return {'flags': flags}

YCM的實現了部分編譯器和預編譯器的功能,使用.ycm_extra_conf.py 文件來設置這些功能,

flags是個數組,可以發現里面有 各種選項和路徑。

預編譯時,頭文件目錄指定方法有三種:標准系統目錄,-I指定目錄,-isystem指定路面,查找順序是: -I > -isystem > 標准系統目錄,

由此可以知道,我們需要指定目錄時,只需要這樣寫:

‘-isystem’
'dir',

我們可以將上面的代碼添加到 YCM全局目錄,但是這回讓YCM全局目錄變得臃腫,

又由於vim啟動時加載的YCM配置文件的查找順序是當前目錄>上層目錄>...>根目錄>YCM全局目錄,

所以只需要將YCM全局目錄拷貝到工程根目錄,再進行添加。

 

下面以我的一個項目為例:

首先我配置好了 .vimrc 和 YCM全局目錄的.ycm_extra_conf.py

然后將YCM全局目錄的.ycm_extra_conf.py拷到源文件目錄下

 

 

修改.ycm_extra_conf.py 添加進工程的頭文件目錄,

 

 

在當前目錄(就是包含.ycm_extra_conf.py的目錄)進入vim,YCM的功能正常!

 

-------------------------------------------------------------------------------------------------------------

今天終於把vim打造成了IDE,開心~

留個影,紀念紀念,哈哈

 

 

 

 

 參考博客:

https://www.jianshu.com/p/5aaae8f036c1

https://www.2cto.com/kf/201805/742061.html

https://blog.csdn.net/nia305/article/details/79954974


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM