Vim C C 的一鍵編譯

2022-02-05 10:33:28 字數 3215 閱讀 9954

開始用vim差不多有兩個月的時間, 一開始用makefile 編譯一整個專案無壓力, 但是當寫到單個檔案的時候, 編譯就比較麻煩了, 每次都得

:w :!gcc -o 1.exe 1.c

:!1非常麻煩...所以我都直接用的code::blocks...其實比vim快多了哈哈...

但是昨晚折騰病發作, 想好好來配置一下, 於是花了乙個晚上...改了乙個能看得過去的一鍵編譯.

原來的**出自: 這個網域名稱好羨慕...

覺得他考慮的東西太多而且不好用, 自己折騰了折騰.

所幸vim的幫助檔案非常全面, 改動他並不是難事.

**及注釋如下:

1

"單個檔案編譯 linux 下大概有問題2"

3"4 map :call do_onefilemake()5

"判斷作業系統

6if(has("

win32

") || has("

win95

") || has("

win64

") || has("

win16"))

7 let g:iswindows=1

8else

9 let g:iswindows=0

10endif11"

函式體12

function do_onefilemake()13"

關閉之前可能存在的qucikfix視窗

14 execute "

cclose"15

"判斷檔案路徑和工作目錄是否相同(其實我也不知道為什麼要判斷

16if expand("

%:p:h

")!=getcwd()

17 echohl warningmsg | echo "

fail to make! this file is not in the current dir!

" |echohl none

18return

19endif20"

sourcefilename 功能未知, 判斷該型別是否被支援

21 let sourcefileename=expand("

%:t")22

if (sourcefileename=="" || (&filetype!="

cpp" && &filetype!="c"

))23 echohl warningmsg | echo "

fail to make! please select the right file!

" |echohl none

24return

25endif26"

編譯前先儲存

27 exec "w"

28"設定make引數,29"

linux 和 windows的情況不同, linux的執行是./*.out windows的是 *.exe linux 下的沒有經過測試o30"

makeprg 是 make的引數, 如果 makeprg=make 就執行真正的make.exe, 尋找目錄下的makefile, 如果不是make的話這個引數就相當於makefile 的內容, 但是無論如何錯誤資訊都會被送到quickfix視窗.(暫時的粗淺理解31"

makeprg中空格和雙引號都需要用反斜槓

"\"轉義

32if &filetype=="c"

33if g:iswindows==1

34set makeprg=gcc\ -o\ \"

%<.exe\"\ \"%\"

35else

36set makeprg=gcc\ -o\ \"

%<\"\ \"%\"

37endif

38 elseif &filetype=="

cpp"

39if g:iswindows==1

40set makeprg=g++\ -o\ \"

%<.exe\"\ \"%\"

41else

42set makeprg=g++\ -o\ \"

%<\"\ \"%\"

43endif

44endif45"

刪除舊檔案, outfilename是生成程式的完整路徑

46 let outfilename=expand("

%:r")."

.exe"47

iffilereadable(outfilename)

48if(g:iswindows==1

)49 let outdeletedsuccess=delete(outfilename)

50else

51 let outdeletedsuccess=delete("

./".outfilename) "

doesn't work

52endif53"

如果檔案刪除不了報錯

54if(outdeletedsuccess!=0)55

set makeprg=make

56 echohl warningmsg | echo "

fail to make! i cannot delete the

".outfilename |echohl none

57return

58endif

59endif60"

靜默編譯, silent 關鍵字用於靜默執行

61 execute "

silent make"62

set makeprg=make 63"

編譯後如果檔案存在,說明編譯成功, 執行之

64if

filereadable(outfilename)

65if(g:iswindows==1

)66 execute "

!\"%<.exe\""67

return

68else

69 execute "

!\"./%<.out\""70

return

71endif

72endif73"

不成功彈出錯誤資訊, 即quickfix視窗

74 execute "

silent copen 6

"75 endfunction

以上.

MySQL編譯安裝 指令碼一鍵安裝

bin bash author zhangheng time 2020 5 12 company version v1 編譯安裝mysql 5.7.29 os centos7.8.2003 第1步 假定mysql的原始碼包已經上傳到linux伺服器裡的當前目錄下 安裝解決軟體依賴關係的包 yum i...

一鍵回家 Excel一鍵美化報表

報表做得太普通,怎麼美化?就像下面 excel一鍵美化報表,早點回家不加班,看這裡!具體操作 1 選中報表 2 同時按住ctr t,一鍵美化報表。備註 按住 ctrl t 一鍵美化報表!以上就是用excel一鍵美化報表的方法!動手試試吧小夥伴們!往期文章 1.excel自動記錄資料登記時間和修改時間...

安卓apk一鍵反編譯工具

安卓apk反編譯工具,一鍵反編譯androidmainfest.xml layout res等資源以及class檔案 1 複製apk檔案到android apk decompile所在目錄 2 windows 直接把apk檔案拖入bat即可 mac 執行shell指令碼 sh users x and...