跳转至

VS Code

簡介

Visual Studio Code(以下簡稱 VS Code)是一個由微軟開發,同時支持 Windows、Linux 和 macOS 等操作系統且開放源代碼的代碼編輯器。它是用 TypeScript 編寫的,並且採用 Electron 架構。它帶有對 JavaScript、TypeScript 和 Node.js 的內置支持,併為其他語言(如 C、C++、Java、Python、PHP、Go)提供了豐富的擴展生態系統。

官網:Visual Studio Code - Code Editing. Redefined

使用 Code Runner 擴展運行代碼

VS Code 安裝並配置擴展後可實現對 C/C++ 的支持,但配置過程比較複雜。一個簡單的編譯與運行 C++ 程序的方案是安裝 Code Runner 擴展。

Code Runner 是一個可以一鍵運行代碼的擴展,在工程上一般用來驗證代碼片段,支持 Node.js、Python、C、C++、Java、PHP、Perl、Ruby、Go 等 40 多種語言。

安裝的方式是在擴展商店搜索 Code Runner 並點擊 Install;或者前往 Marketplace 並點擊 Install,瀏覽器會自動打開 VS Code 並進行安裝。

安裝完成後,打開需要運行的文件,點擊右上角的小三角圖標即可運行代碼;按下快捷鍵Ctrl+Alt+N(在 macOS 下是Control+Option+N)也可以得到同樣的效果。

Warning

如果安裝了 VS Code 與 Code Runner 後,代碼仍然無法運行,很有可能是因為系統尚未安裝 C/C++ 的運行環境,參考 Hello, World! 頁面 以安裝。

記得勾選設置中的 Run In Terminal 選項,如圖:

使用 C/C++ 擴展編譯並調試/智能補全代碼

安裝擴展

在 VS Code 中打開擴展商店,在搜索欄中輸入 C++ 或者 @category:"programming languages",然後找到 C/C++,點擊 Install 安裝擴展。

Warning

在配置前,請確保系統已經安裝了 G++ 或 Clang,並已添加到了 PATH 中。請使用 CMD 或者 PowerShell,而不是 Git Bash 作為集成終端。

配置 GDB/LLDB 調試器

GDB

在 VS Code 中新建一份 C++ 代碼文件,按照 C++ 語法寫入一些內容(如 int main(){}),保存並按下F5,進入調試模式。 如果出現了「選擇調試器」的提示,選擇 C++ (GDB/LLDB)。在「選擇配置」中,G++ 用户選擇 g++.exe - 生成和調試活動文件;Clang 用户選擇 clang++ - 生成和調試活動文件

Warning

配置名稱並非固定,而是可以自定義的。不同的操作系統可能具有不同的配置名稱。

完成後,VS Code 將自動完成初始化操作在下方的集成終端中啓動調試。至此,GDB 所有的配置流程已經完畢。

LLDB

如果需要採用 LLDB,需要安裝另外一款擴展1——CodeLLDB。從該項目的 Release 頁面下載 .vsix 文件後2,從 VS Code 的擴展頁面安裝。

先按照上文 GDB 的配置過程操作一遍,然後刪除 .vscode/launch.json,按下F5,選擇 LLDB,再把 launch.json 中的 ${workspaceFolder}/<executable file> 更改為 ${fileDirname}/${fileBasenameNoExtension}.exe 即可。

至此,LLDB 配置完成。再次按下F5即可看到軟件下方的調試信息。

若要在以後使用 VS Code 編譯並調試代碼,所有的源代碼都需要保存至這個文件夾內。若要編譯並調試其他文件夾中存放的代碼,需要重新執行上述步驟(或將舊文件夾內的 .vscode 子文件夾複製到新文件夾內)。

開始調試代碼

使用 VS Code 打開一份代碼,將鼠標懸停在行數左側的空白區域,並單擊出現的紅點即可為該行代碼設置斷點。再次單擊可取消設置斷點。

按下F5進入調試模式,編輯器上方會出現一個調試工具欄,四個藍色按鈕從左至右分別代表 GDB 中的 continue,next,stepuntil

如果編輯器未自動跳轉,點擊左側工具欄中的「調試」圖標進入調試窗口,即可在左側看到變量的值。

在調試模式中,編輯器將以黃色底色顯示下一步將要執行的代碼。

配置 IntelliSense

用於調整 VS Code 的智能補全。

如果你使用 Clang 編譯器,在「IntelliSense 模式」中選擇 clang-x64 而非默認的 msvc-x64;如果你使用 G++ 編譯器,選擇 gcc-x64 以使用自動補全等功能。否則會得到「IntelliSense 模式 msvc-x64 與編譯器路徑不兼容。」的錯誤。

配置 clangd

Warning

由於功能衝突,安裝 clangd 擴展後 C/C++ 擴展的 IntelliSense 功能將被禁用(調試等功能仍然使用 C/C++ 擴展)。如果 clangd 擴展的功能出現問題,可以查看是否禁用了 C/C++ 擴展的 IntelliSense 功能。

clangd 簡介

LLVM 官網上對 clangd 的介紹是這樣的:

Clangd is an implementation of the Language Server Protocol leveraging Clang. Clangd’s goal is to provide language "smartness" features like code completion, find references, etc. for clients such as C/C++ Editors.

簡單來説,clangd 是 Clang 對語言服務器協定(Language Server Protocol)的實現,提供了一些智能的特性,例如全項目索引、代碼跳轉、變量重命名、更快的代碼補全、提示信息、格式化代碼等,並且能利用 LSP 與 Vim、Emacs、VSCode 等編輯器協作。雖然官方給出的定義是 LSP 的實現,但 clangd 的功能更接近語言服務器(Language Server)而不僅僅只是協議本身。

VS Code 的 C/C++ 擴展也有自動補全等功能,但在提示信息的易讀程度的準確度等方面與 clangd 相比稍遜一籌,所以我們有時會使用 clangd 代替 C/C++ 擴展來實現代碼自動補全等功能。

安裝

參見 Getting started

VS Code 擴展

打開 VS Code 擴展商店,在搜索欄中輸入 clangd 找到 clangd 擴展並安裝

如果下方彈出 clangd 要求關閉 Intellisense 的對話框,點擊 "Disable Intellisense",重新加載工作區,就可以享受 clangd 的自動補全等功能了。

編輯

語法設置

在新打開的編輯器中點擊「選擇語言」,即可打開對應的語法高亮,如圖:

快捷鍵

部分快捷鍵:

按鍵 操作
Ctrl+C/X 複製/剪切當前行(當沒有選擇內容時)
Ctrl+Shift+K 刪除當前行
Alt+Up/Down 行上移/下移
Alt+Shift+Up/Down 行向上/向下複製
Ctrl+/ 切換行註釋
Ctrl+[/] 行向左/右縮進
Ctrl+Shift+[/] 行摺疊/展開
Ctrl+P 打開最近打開的文件
Alt+Z 切換自動折行
Alt+F12 速覽定義(如函數的定義)
Ctrl+Shift+\ 跳轉到匹配括號
Ctrl+T 在工作區中查找符號(在文件夾中查找指定名稱函數等)

多光標

按住Alt並單擊即可在編輯器中添加光標,多數編輯操作都可同時進行;按住鼠標中鍵並在編輯器中移動也可添加多行光標,如圖:

Ctrl+F2可在編輯器中同時更改所有匹配項,如圖:

注意此時在右上角會有一個工具欄,可在其中開啓查找匹配項時是否開啓大小寫匹配、全字匹配等。

參考資料與註釋


  1. VS Code 的 C/C++ 擴展如果選擇 lldb 作調試器,則會默認採用 lldb-mi 程序,而它已經被 LLVM 開發團隊從項目中分離出來,需要自己編譯該程序。而它本身就有一些 bug,使用體驗和方便程度都不如 CodeLLDB 擴展。 

  2. 從擴展商店安裝 CodeLLDB 後它會再從 GitHub 下載本體,下載速度奇慢,有時下載出錯,所以最好直接下載本體然後安裝。更新也可直接按照以上步驟下載安裝。