代碼檢查是個好東西,讓你在編輯文字的同時就幫你把潛在錯誤標(biāo)注出來,不用等到編譯或者運行了才發(fā)現(xiàn) 。我很奇怪 2018 年了,為啥網(wǎng)上還在到處介紹老舊的 syntastic,但凡見到介紹這個插件的文章基本都可以不看了 。老的 syntastic 基本沒法用,不能實時檢查,一保存文件就運行檢查器并且等待半天,所以請用實時 linting 工具 ALE:
大概長這個樣子,隨著你不斷的編輯新代碼,有語法錯誤的地方會實時幫你標(biāo)注出來,側(cè)邊會標(biāo)注本行有錯,光標(biāo)移動過去的時候下面會顯示錯誤原因,而具體錯誤的符號下面會有紅色波浪線提醒 。Ale 支持多種語言的各種代碼分析器,就 C/C++ 而言,就支持:gcc, clang, cppcheck 以及 clang-format 等,需要另行安裝并放入 PATH下面,ALE能在你修改了文本后自動調(diào)用這些 linter 來分析最新代碼,然后將各種 linter 的結(jié)果進(jìn)行匯總并顯示再界面上 。
同樣,我們也需要簡單配置一下:
let g:ale_linters_explicit = 1let g:ale_completion_delay = 500let g:ale_echo_delay = 20let g:ale_lint_delay = 500let g:ale_echo_msg_format = '[%linter%] %code: %%s'let g:ale_lint_on_text_changed = 'normal'let g:ale_lint_on_insert_leave = 1let g:airline#extensions#ale#enabled = 1let g:ale_c_gcc_options = '-Wall -O2 -std=c99'let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'let g:ale_c_cppcheck_options = ''let g:ale_cpp_cppcheck_options = ''基本上就是定義了一下運行規(guī)則,信息顯示格式以及幾個 linter 的運行參數(shù),其中 6,7 兩行比較重要,它規(guī)定了如果 normal 模式下文字改變以及離開 insert 模式的時候運行 linter,這是相對保守的做法,如果沒有的話,會導(dǎo)致 YouCompleteMe 的補全對話框頻繁刷新 。
記得設(shè)置一下各個 linter 的參數(shù),忽略一些你覺得沒問題的規(guī)則,不然錯誤太多沒法看 。默認(rèn)錯誤和警告的風(fēng)格都太難看了,你需要修改一下,比如我使用 GVim,就重新定義了警告和錯誤的樣式,去除默認(rèn)難看的紅色背景,代碼正文使用干凈的波浪下劃線表示:
let g:ale_sign_error = "ue009ue009"hi! clear SpellBadhi! clear SpellCaphi! clear SpellRarehi! SpellBad gui=undercurl guisp=redhi! SpellCap gui=undercurl guisp=bluehi! SpellRare gui=undercurl guisp=magenta不同項目之間如果評測標(biāo)準(zhǔn)不一樣還可以具體單獨制定 linter 的參數(shù),具體見 ALE 幫助文檔了 。我基本使用兩個檢查器:gcc 和 cppcheck,都可以在 ALE 中進(jìn)行詳細(xì)配置,前者主要檢查有無語法錯誤,后者主要會給出一些編碼建議,和對危險寫法的警告 。
我之前用 syntastic 時就用了兩天就徹底刪除了,而開始用 ALE 后,一用上就停不下來,頭兩天我還一度覺得它就是個可有可無的點綴,但是第三天它幫我找出兩個潛在的 bug 的時候,我開始覺得沒白安裝,比如:
即便你使用各類 C/C++ IDE,也只能給實時你標(biāo)注一些編譯錯誤或者警告,而使用 ALE + cppcheck/gcc,連上面類似的潛在錯誤都能幫你自動找出來,并且當(dāng)你光標(biāo)移動過去時在最下面命令行提示你錯誤原因 。
用上一段時間以后,讓你寫 C/C++ 有一種安心和舒適的感覺 。
修改比較
這是個小功能,在側(cè)邊欄顯示一個修改狀態(tài),對比當(dāng)前文本和 git/svn 倉庫里的版本,在側(cè)邊欄顯示修改情況,以前 Vim 做不到實時顯示修改狀態(tài),如今推薦使用 vim-signify 來實時顯示修改狀態(tài),它比 gitgutter 強,除了 git 外還支持 svn/mercurial/cvs 等十多種主流版本管理系統(tǒng) 。
沒注意到它時,你可能覺得它不存在,當(dāng)你有時真的看上兩眼時,你會發(fā)現(xiàn)這個功能很貼心 。最新版 signify 還有一個命令`:SignifyDiff`,可以左右分屏對比提交前后記錄,比你命令行 svn/git diff 半天直觀多了 。并且對我這種同時工作在 subversion 和 git 環(huán)境下的情況契合的比較好 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 配電房滅火器配置標(biāo)準(zhǔn)
- 低配置電腦怎么流暢的打英雄聯(lián)盟 低配置電腦流暢打英雄聯(lián)盟方法介紹
- 簡述DNS的主要功能 配置dns有什么用
- 十分鐘配置Mac OS主題 ubuntu桌面美化mac
- linux網(wǎng)絡(luò)配置的詳細(xì)過程 linux命令行界面切換
- C語言各種類型所占字節(jié)數(shù) c語言中一個數(shù)字占幾個字節(jié)
- diy組裝電腦配置清單 diy組裝機是什么意思
- 室內(nèi)消火栓箱內(nèi)一般應(yīng)配置有哪些
- 小程序ssl證書配置 ssl證書配置教程
- 小米6x參數(shù)配置對比 小米6x中關(guān)村參數(shù)
