Background
VSCode是微軟開發的一款開源代碼編輯器,具有可拓展性強,多語言支持,跨平台等優點,在不同的個性化配置下幾乎可以用作所有的輕量級開發。我在初學C的時候也使用的是類似於Xcode、Visual Studio等大型IDE來新建一個C語言工程,編寫一個僅含有main函數的文件,顯得過於大材小用了。后來學校推薦使用的Code::Blocks和Dev C++也已經多年沒有更新,且界面古老,對Mac的支持也很差。直到使用了VSCode並正確配置了之后,我似乎找到了當下最適合用於學習C/C++的代碼編輯器。
下載與安裝
https://code.visualstudio.com/
配置調試環境
此時你已經可以新建代碼文件並編輯。但為了能在終端中直接調試代碼,我們還需要配置Launch.json和task.json。
配置 launch.json
進入左側的調試頁面,選擇[添加配置...],就會自動在你的工作目錄下新建一個.vscode文件來存放你的調試配置。這里我們選擇C/C++: (lldb) Launch。
對於這里的配置,官方的文檔里( https://go.microsoft.com/fwlink/?linkid=830387 )有詳細的說明。對於一般用戶,我在這里修改成了如下配置。
{ "preLaunchTask": "build c++", "name": "Launch C++", "type": "cppdbg", "request": "launch", "program": "{fileBasenameNoExtension}.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "lldb",
大部分保持默認,需要修改的地方如下:
preLaunchTask:手動添加的參數,稍后我們會自行編輯的一個任務,其作用是將當前文件編譯成可執行文件。
program:需要和稍后配置的task相對應,即打算運行的程序。需要設置為二進制程序目錄而不是源代碼文件。
externalConsole:設置為true來在外置終端(macOS自帶的)中運行程序。該選項設置為false的話會在內置終端中運行,無法輸入數據(應該有解決方法,但我目前沒有發現)
如果你需要打開日志來排查問題,加入以下內容:
"logging": {
// "engineLogging": true,
"trace": true,
"traceResponse": true,
}
-
FontSize Shortcuts:可以使用Command + +/-快速調整編輯器中文本字體大小而不影響其他部分的大小。
-
CodeRunner:免配置一件快速運行多種語言的代碼,不支持斷點調試。
-
-
Markdown All in One:
-
增強的Markdown預覽,支持了LaTeX公式,並可以格式化美化源文件。
-
sftp:玩服務器的話可以試一試,小規模操作可以丟掉FileZilla了。直接使用VSCode編輯服務器文件簡直太棒了。
-
Markdown PDF:Markdown黨的福音,可以利用Chromium內核將md導出美觀的pdf文件。
-
Nasc VSCode Touchbar:自定義TouchBar上的功能,可以添加注釋、批量重命名、跳轉定義等功能,更加接近Xcode的TouchBar體驗。
這里是我覺得一些比較不錯的插件,會有極小幾率持續更新。
一些值得推薦的插件
VSCode同樣提供具有GUI的Linux系統版本。如果你使用虛擬機並在虛擬機中共享同一個工作文件夾,lldb的調試配置文件可能會無法運行。這時候只需要將你的Launch.json中的"MIMode"配置由lldb改成gdb即可。
對於 Linux 的更改
在Push更改的時候,會需要輸入你的GitHub賬戶和密碼。如果想要保存賬戶和密碼,在終端中使用git config --global credential.helper store
即可保存你的憑據。
git config --global user.name "用戶名" git config --global user.email "用戶郵箱"
提交的時候如果你沒有配置過你的用戶名和密碼,可能會報錯。這時候使用快捷鍵control+`打開終端,配置一下默認用戶名和郵箱:
使用GitHub Desktop可以可視化地將代碼托管到GitHub。但VSCode也內置了源代碼管理。大多數基本操作都可以在這里完成。你還可以下載Git History插件來查看提交情況。如果該文件夾還沒有一個Git倉庫,只需要點擊初始化就可以了。
將你的文件夾托管到 GitHub
(摔
后來其實解決方案很簡單。文件目錄里不要有空格就好了。
前陣子會很莫名其妙地遇到部分c語言文件中的斷點無法正常停止的問題。所有斷點打開后都會提示Unverified Breakpoint,但有些文件卻可以正常打斷點。搜索許久未果,為此還特地開了一個GitHub的的issue(https://github.com/Microsoft/vscode-cpptools/issues/3246)。
無法設置斷點的解決方案
一些 Tips
此外,在商店市場里還有許多配色主題和圖標主題可以選擇。
之前Visual Studio特別吸引人的一點就是在輸入完一行代碼后,編輯器會自動幫我在諸如運算符左右的地方加上空格並整理大括號的位置。這一Auto Formatting功能在VSCode下也得到了保留。可以按需在設置里開啟Format On Paste, Format on Save, Format On Type的選項。
個性化
配置好以上兩個文件后,你應該就可以在調試界面運行程序並設置斷點、監視變量了。如果出現變量未驗證(Unverified Breakpoint)的問題,文末有一個常見的解決方案。
args:即命令行運行參數。我在這里使用的C17標准。-o下面的一個參數即為輸出目錄。其中${fileBasenameNoExtension}表示沒有拓展名的文件名。
command:g++來編譯C++,gcc來編譯C
label:任務名稱,和launch.json對應
大多數配置保持默認即可。我這里修改的地方主有:
{ "label": "build c++", "type": "shell", "command": "g++", "args": [ "{workspaceFolder}/temp/${fileBasenameNoExtension}.out", "-g" ], "group": "build", "presentation": { "echo": true, "focus": false, "panel":"shared", "showReuseMessage": true, "clear": false, "reveal": "silent" }, },
在該文件里,我們配置一個名為build c++的task,將文件編譯到工作目錄下temp文件夾下的對應文件(你也可以自行配置生成目錄,但需要和上面的launch.json相對應。我的build c++配置如下:
對於默認快捷鍵,點擊command+P並輸入>task來新建一個生成任務。
配置 task.json
這個運行任務的意思就是首先運行一個build c++的task來,得到可執行文件,接着再運行並調試這個文件。
來源:https://billc.io/2019/03/mac-vscode-guide