【VSCode】如何在 VSCode 上自定義 C++ 的 coding style

Zam Huang
5 min readAug 29, 2019

--

前言

Zam 試過幾種 IDE 來開發 C++ Project,諸如 Sublime、Dev C++、Qt Creator 但都不是太好用,而且在 coding style 的調整實在都不滿意。但後來遇到了 VSCode 跟其 Extension C/C++ for Visual Studio Code,雖不能說滿意,但至少 Coding format 是沒有問題了。

如何客制化自己的 coding style rule

在這之前請先安裝 VSCode 跟 Extension C/C++ for Visual Studio Code

選擇你要的格式

選擇連結: Clang Format Style Options(之後有人敲碗再幫大家翻譯)

推薦幾個我喜歡的設定參數

  • BasedOnStyle:看你喜歡哪個流派囉
LLVM A style complying with the LLVM coding standards
Google A style complying with Google’s C++ style guide
Chromium A style complying with Chromium’s style guide
Mozilla A style complying with Mozilla’s style guide
WebKit A style complying with WebKit’s style guide
Microsoft A style complying with Microsoft’s style guide
  • IndentWidth:在程式裡面空幾格
IndentWidth: 4void f() {
someFunction();
if (true, false) {
f();
}
}
  • ColumnLimit:每一行的最大字數,設定 0 代表無限制
  • SpacesBeforeTrailingComments: 程式碼後的註解前空格
SpacesBeforeTrailingComments: 3
void f() {
if (true) { // foo1
f(); // bar
} // foo
}
  • DerivePointerAlignment:將 &* 這兩個 pointer,以文件出現率最高的格式為主,格式化後檔案內全部都會變成頻率最高那個一樣
  • Cpp11BracedListStyle:就是 {} 這個的空格問題
true:                                false:
vector<int> x{1, 2, 3, 4}; vs. vector<int> x{ 1, 2, 3, 4 };
vector<T> x{{}, {}, {}, {}}; vector<T> x{ {}, {}, {}, {} };
f(MyMap[{composite, key}]); f(MyMap[{ composite, key }]);
new int[3]{1, 2, 3}; new int[3]{ 1, 2, 3 }
  • PointerAlignment:有三種 Left、Right、Middle
// Left
int* a;
// Right
int *a;
// Middle
int * a;
  • AccessModifierOffset:自動幫 public: 等等空行

修改設定

STEP 1 前往 Preferences -> Settings

STEP 2–1 搜尋 C_Cpp.clang_format_fallbackStyle

STEP 2–2 或者也可以直接改 setting.json

路徑

Windows %APPDATA%\Code\User\settings.json

macOS $HOME/Library/Application Support/Code/User/settings.json

Linux $HOME/.config/Code/User/settings.json

STEP 3 將你想要的參數加進去,基本上 Google style 已經滿好用了,但還是可以做一點屬於自己的調整

修改這個欄位,原本應該是 Visual Studio

"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 0}"

以下為成果

設定頁面的長這樣
setting.json 長這樣

Reference

VSCode Setting

Clang Format Style Options

--

--

Zam Huang

一個記錄著自己人生過程的工程師。A Software Engineer at Ruckus Network in Taiwan。 IG, Linkedin:@zam_huang, stack overflow: user:2613194