最簡單的編譯單個文件,和 sublime 的默認(rèn) build system 差不多,我們定義 F9 為編譯單文件:
nnoremap <silent> <F9> :AsyncRun gcc -Wall -O2 "$(VIM_FILEPATH)" -o "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" <cr>其中 $(…) 形式的宏在執(zhí)行時會被替換成實際的文件名或者文件目錄,這樣按 F9 就可以編譯當(dāng)前文件,同時按 F5 運行:
nnoremap <silent> <F5> :AsyncRun -raw -cwd=$(VIM_FILEDIR) "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" <cr>用雙引號引起來避免文件名包含空格,“-cwd=$(VIM_FILEDIR)” 的意思時在文件文件的所在目錄運行可執(zhí)行,后面可執(zhí)行使用了全路徑,避免 linux 下面當(dāng)前路徑加 “./” 而 windows 不需要的跨平臺問題 。
參數(shù) `-raw` 表示輸出不用匹配錯誤檢測模板 (errorformat) ,直接原始內(nèi)容輸出到 quickfix 窗口 。這樣你可以一邊編輯一邊 F9 編譯,出錯了可以在 quickfix 窗口中按回車直接跳轉(zhuǎn)到錯誤的位置,編譯正確就接著執(zhí)行 。
接下來是項目的編譯,不管你直接使用 make 還是 cmake,都是對一群文件做點什么,都需要定位到文件所屬項目的目錄,AsyncRun 識別當(dāng)前文件的項目目錄方式和 gutentags相同,從文件所在目錄向上遞歸,直到找到名為 “.git”, “.svn”, “.hg”或者 “.root”文件或者目錄,如果遞歸到根目錄還沒找到,那么文件所在目錄就被當(dāng)作項目目錄,你重新定義項目標(biāo)志:
let g:asyncrun_rootmarks = ['.svn', '.git', '.root', '_darcs', 'build.xml'] 然后在 AsyncRun 命令行中,用 “<root>” 或者 “$(VIM_ROOT)”來表示項目所在路徑,于是我們可以定義按 F7 編譯整個項目:
nnoremap <silent> <F7> :AsyncRun -cwd=<root> make <cr>那么如果你有一個項目不在 svn 也不在 git 中怎么查找 <root> 呢?很簡單,放一個空的 .root 文件到你的項目目錄下就行了,前面配置過,識別名為 .root 的文件 。
繼續(xù)配置用 F8 運行當(dāng)前項目:
nnoremap <silent> <F8> :AsyncRun -cwd=<root> -raw make run <cr>當(dāng)然,你的 makefile 中需要定義怎么 run ,接著按 F6 執(zhí)行測試:
nnoremap <silent> <F6> :AsyncRun -cwd=<root> -raw make test <cr>如果你使用了 cmake 的話,還可以照葫蘆畫瓢,定義 F4 為更新 Makefile 文件,如果不用 cmake 可以忽略:
nnoremap <silent> <F4> :AsyncRun -cwd=<root> cmake . <cr>由于 C/C++ 標(biāo)準(zhǔn)庫的實現(xiàn)方式是發(fā)現(xiàn)在后臺運行時會緩存標(biāo)準(zhǔn)輸出直到程序退出,你想實時看到 printf 輸出的話需要 fflush(stdout) 一下,或者程序開頭關(guān)閉緩存:“setbuf(stdout, NULL);” 即可 。
同時,如果你開發(fā) C++ 程序使用 std::cout 的話,后面直接加一個 std::endl 就強制刷新緩存了,不需要弄其他 。而如果你在 Windows 下使用 GVim 的話,可以彈出新的 cmd.exe 窗口來運行剛才的程序:
nnoremap <silent> <F5> :AsyncRun -cwd=$(VIM_FILEDIR) -mode=4 "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" <cr>nnoremap <silent> <F8> :AsyncRun -cwd=<root> -mode=4 make run <cr>在 Windows 下使用 -mode=4 選項可以跟 Visual Studio 執(zhí)行命令行工具一樣,彈出一個新的 cmd.exe窗口來運行程序或者項目,于是我們有了下面的快捷鍵:
F4:使用 cmake 生成 MakefileF5:單文件:運行F6:項目:測試F7:項目:編譯F8:項目:運行F9:單文件:編譯F10:打開/關(guān)閉底部的 quickfix 窗口恩,編譯和運行基本和 NotePad++ / GEdit 的體驗差不多了 。如果你重度使用 cmake 的話,你還可以寫點小腳本,將 F4 和 F7 的功能合并,檢測 CMakeLists.txt 文件改變的話先執(zhí)行 cmake 更新一下 Makefile,然后再執(zhí)行 make,否則直接執(zhí)行 make,這樣更自動化些 。
動態(tài)檢查
以上關(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ò)配置的詳細過程 linux命令行界面切換
- C語言各種類型所占字節(jié)數(shù) c語言中一個數(shù)字占幾個字節(jié)
- diy組裝電腦配置清單 diy組裝機是什么意思
- 室內(nèi)消火栓箱內(nèi)一般應(yīng)配置有哪些
- 小程序ssl證書配置 ssl證書配置教程
- 小米6x參數(shù)配置對比 小米6x中關(guān)村參數(shù)
