Sublime Text 3——C/C++環境配置

C/C++的開發環境有很多,但結合編輯器的操作性、通用性以及外觀,Sublime是非常不錯的選擇,相比於VS,它體積小巧、運行速度快,相比於Dev-C++、Clang,它可定製性更強、功能更多,相比於Vim、Emacs,它配置起來更簡單,而且跨平臺,現在介紹如何用Sublime打造C/C++開發環境。


一個優秀的開發環境應該具備易於操作的編輯環境,全面的代碼提示、檢錯功能,強大的調試功能,下面就從這幾個方面介紹幾款配置C/C++常用的插件,並說明幾點注意事項。

1.常用插件

(1) CTags

用來在函數定義位置跳轉,除了安裝CTags插件還需要安裝ctags程序,並添加系統環境路徑。使用時先在程序所在文件夾下建立ctag標籤,該目錄下會生成.tags.tags_sorted_by_files索引文件,然後在想要跳轉的函數位置右鍵選擇Nevigate to Definition即可完成跳轉,可以用快捷鍵配置如下。

{
	"command": "navigate_to_definition",
    "keys": ["f3"]
},
{
    "command": "jump_back",
    "keys": ["f2"]
},

(2) SublimeGDB

Sublime版的GDB,相當於Linux下gdb -tui指令,帶基本的圖形界面,下載後需要在setting中配置如下代碼:(其中interpreter=mi指的是gdb的mechine interface指令,是供插件等軟件調用的,而我們一般使用的gdb命令是commandline interface)

{
    "workingdir":"${folder:${file}}",
    "commandline":"g++ -g -std=c++11 ${file} -o ${file_base_name} && gdb --interpreter=mi --args ./${file_base_name}",
}

使用時在console中選擇Start Debugging,快捷鍵F9可以設置斷點,調試時F10相當於gdb的next,F11相當於gdb的step,以預覽源碼、變量,同時可供用戶輸入gdb命令,十分方便,但好像並不能顯示輸出比較蛋疼,實在需要看輸出結果的直接在cmd中運行gdb吧。

(3) C++ Completions

Sublime自帶了C代碼的補全,但是對C++支持並不是很好,所以需要額外配置C++代碼補全插件。

(4) SublimeLinter-clang

SublimeLinter是代碼檢錯的利器,SublimeLinter-clang算是其中一個子集,使用這個插件還需要安裝SublimeLinter插件以及LLVM環境並將clang.exe的路徑添加至系統環境變量。默認情況下警告和報錯都是用outline,如果想更改樣式可以在SublimeLinter Settings - User中修改,下面附上筆者的配置:

// SublimeLinter Settings - User
{
   "styles": 
	[
        {
   
            "priority": 1,
            "mark_style": "squiggly_underline",
            "scope": "region.yellowish markup.changed.sublime_linter markup.warning.sublime_linter",
            "icon": "dot",
            "types": [
                "warning"
            ]
        },
        {

            "priority": 1,
            "mark_style": "outline",
            "scope": "region.redish markup.deleted.sublime_linter markup.error.sublime_linter",
            "icon": "dot",
            "types": [
                "error"
            ]
        },
    ],
    
     "lint_mode" : "background"
}

2. 新建C編譯環境

Sublime自身沒有編譯C的環境,因此需要用戶自己建立一個。方法是選擇Tools->Build System->New Build System,輸入以下代碼(代碼內容可以參考C++.sublime-package中的C++ Single File.sublime-build),然後爲新建的編譯環境取個名字如:C.sublime-build,新建的環境會放置在Packages->User中,而Sublime自帶的配置環境在其安裝路徑下的Packages中,這一點要分清。需要編譯C語言時,在Tools->Build System中選擇剛建立的環境即可。

{
	 "cmd": ["gcc", "${file}", "-std=c99", "-o", "${file_path}/${file_base_name}", "&", "start", "cmd", "/c", "${file_base_name} & echo. & pause"],  
	 "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",  
	 "working_dir": "${file_path}",  
	 "selector": "source.c",  
	 "shell": true,  
	 "encoding":"cp936", 
}

3. 注意事項

(1) 交互環境

Sublime自身並不帶與用戶交互的接口,比如現在我寫了一個需要用戶輸入數值的程序,這在Sublime中是無法完成的,你會發現在底端窗口輸入了正確格式的數值回車後程序毫無反應。配置方法是修改原來的C++.sublime-package內容或者新建一個編譯環境,下面分別進行介紹。

a) 修改 C++.sublime-package

在Sublime安裝路徑下的Packages文件中找到C++.sublime-package,將其改爲.zip後綴後解壓,將其中C++ Single File.sublime-build文件的內容改爲以下內容後,還原成.sublime-package格式文件,這樣選擇Tools–>Build System–>C++ Single File後,就可以編譯運行了,運行後會打開cmd供與用戶交互。

{     
	"cmd":"g++ \"${file}\" -o \"${file_path}/${file_base_name}\"", 
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}", 
    "encoding":"cp936",
    "selector": "source.c, source.c++",     
    "variants":     
    [          
    	{              
	    	"name": "Run",             
	    	"cmd":  "cmd /c start ; cmd /k ; \"${file_path}/${file_base_name}\""                                         
        }        
    ] 
} 

有一點要注意,正常的windows下目錄層次是反斜槓,但是${變量名}的目錄層次是斜槓,如${file_path}/${file_base_name}

b) 新建C++編譯環境

選擇Tools–>Build System–>New Build System,然後輸入和a)完全一致的代碼,保存後在Tools–>Build System中選擇剛剛自己新建的環境,即可編譯運行。

(2) 系統環境區別

是跨系統的,但不代表其針對任何系統的配置文件都是相同的,在Linux下的配置文件複製到windows下就不一定可行,就比如"shell_cmd""cmd"命令,同樣的內容在Linux下可以直接打開shell與用戶進行交互,但是windows下必須自行添加配置打開cmd窗口才能實現交互功能,配置時要分清楚。畢竟Sublime是定製化非常強的軟件,運行出錯時莫急莫慌,細心排查,也不要一棵樹吊死,條條大路通羅馬,任何編輯器都不是萬能的,要懂得揚長避短。


注:Sublime插件衆多且多處於動態改進過程中,再結合個人喜好,C/C++環境配置方式有很多種,具體的插件配置方法還需仔細閱讀源文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章