1. 程式人生 > >Vim外掛之vim-clang和clang complete

Vim外掛之vim-clang和clang complete

在Vim所有的外掛裡面,YouCompleteMe 無疑是最強大的了,但安裝也是異常的繁瑣,在Windows平臺上更加麻煩,下面介紹兩個基於clang的外掛可以部分替代YCM的功能(主要面向C家族)。

clang complete

首先介紹clang complete,YCM對C家族的補全就是基於它,功能之強大不用多提,使用它必須先下載安裝LLVM並將其新增到系統環境變數中(下面提到的vim-clang外掛也需要這麼做),之後安裝clang complete並寫入下面的配置即可

"clang complete
"自動選擇第一個匹配項但不插入到程式碼中
let g:clang_auto_select = 1
"在->. ., ::後自動補全 let g:clang_complete_auto = 1 "發現錯誤之後開啟QuickFix視窗 let g:clang_complete_copen = 1 "高亮警告和錯誤 let g:clang_hl_errors = 1 "插入第一個補全後關閉預覽視窗 let g:clang_close_preview = 1 "開啟對C++11的編譯支援 let g:clang_user_options = '-std=c++11' "設定clang庫路徑 let g:clang_library_path = 'C:\Program Files (x86)\LLVM\bin'
"補全預處理指令,巨集和常數,預設為0,不補全 let g:clang_complete_macros = 1 "補全程式碼模式,比如迴圈等,預設為0,不補全 let g:clang_complete_patterns = 1 "<C-]>跳轉到宣告 let g:clang_jumpto_declaration_key = "<C-]>" "<C-w>]在預覽視窗中開啟宣告 let g:clang_jumpto_declaration_in_preview_key = "<C-w>]" "<C-t>回跳 let g:clang_jumpto_back_key = "
<C-t>" "使用UltiSnips進行程式碼片段補全 let g:clang_snippets = 1 let g:clang_snippets_engine = 'ultisnips'

上面設定的clang庫路徑,請根據你的電腦上llvm安裝的位置進行修改,另外這個外掛與Vim自帶的Omni completion有衝突,要使用它必須關閉Omni completion。

vim-clang

vim-clang是在clang complete的啟發下開發的,主要特點是補全速度快,支援格式化程式碼,配置如下

"vim-clang
"開啟對C11和C++11的支援
let g:clang_c_options = '-std=gnu11'
let g:clang_cpp_options = '-std=c++11 -stdlib=libc++'
"關閉語法檢查
let g:clang_check_syntax_auto = 0
"不要自動格式化程式碼
let g:clang_format_auto = 0
"程式碼格式化風格選項依次有LLVM,Google,Chromium,Mozilla,WebKit
"let g:clang_format_style = 'LLVM'
"使得vim-clang的補全與其他IDE一致
let g:clang_cpp_completeopt = 'longest,menuone,preview'

Vim自帶的補全

當然,你想簡單一點也可以使用Vim自帶的補全,具體見下表

按鍵 補全物件
Ctrl-X Ctrl-F 檔名
Ctrl-X Ctrl-L 整行
Ctrl-X Ctrl-D 巨集定義 (包括包含檔案裡的)
Ctrl-X Ctrl-I 當前檔案以及所包含的檔案
Ctrl-X Ctrl-K 字典檔案內的單詞
Ctrl-X Ctrl-T 同義詞詞典檔案內的單詞
Ctrl-X Ctrl-] 標籤
Ctrl-X Ctrl-V Vim命令列
Ctrl-X Ctrl-O 使用Vim自帶的Omni completion
Ctrl-N 下一個匹配項
Ctrl-P 上一個匹配項
Ctrl-A 重複上一次插入的文字