1. 程式人生 > 其它 >VSCode格式化程式碼,左大括號前換行設定成“函式換行,其他不換行“

VSCode格式化程式碼,左大括號前換行設定成“函式換行,其他不換行“

太長不看版

開啟設定找到 "C_Cpp: Clang_format_style" 這項,填入以下程式碼:

{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Linux, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }

這樣就可以在原來的基礎上,修改為函式的左大括號前換行,其他不換行。

要了解原理的話,請繼續閱讀。

格式化工具

安裝了 "C/C++" 拓展後,VSCode會呼叫 " clang-format.exe " 來格式化程式碼,這個程式是 LLVM 專案提供的工具。所以設定格式化程式碼要通過設定這個軟體的執行引數來實現。除了 "C_Cpp: Clang_format_style" 還有一項相關的設定項,叫"C_Cpp: Clang_format_fallback Style"。在前一個設定項出錯時會應用後一個設定項。

設定中有叫 " C_Cpp › Vc Format › New Line" 的,之前我嘗試修改相關的設定項,但並沒有起作用。"

Vc Format" "Clang_format" 的關係我還沒搞清楚,只知道要修改後者才能起作用。

Clang_format設定

VSCode的設定項中有相關說明,可用引數可以分為三類:

1.        ".clang-format" 檔案指定樣式,檔案在當前目錄或者父目錄都可以

2.        用幾個預設樣式

3.        用引數指定樣式

預設設定是先用檔案指定,找不到檔案後用 "Visual Studio" 樣式,在說明中給出了該樣式的引數。至於引數怎麼設定,可以參考官網的文件,也可以參考簡書上的這篇翻譯文章。本文只說幾點關鍵內容,詳細內容自行查閱文件。

".clang-format
" 檔案

該檔案使用 YAML 格式,可以自己在文字文件中編寫引數,再重新命名。將重新命名好的檔案放到工作目錄或者父目錄就可以應用引數。

也可以生成完整引數的檔案,自己再按需修改。找到 "clang-format.exe" 的路徑,在系統環境變數的Path中新增該路徑。之後用PowerShell執行以下程式碼:

clang-format -style=llvm -dump-config > .clang-format

生成的檔案在 " C:\Windows\System32" 或者在使用者資料夾。找不到程式或者生成檔案的話,推薦用Everything搜尋。

配置多語言

使用Language:引數來設定語言,文件中有支援的語言,以及怎麼修改後綴對應的語言,本文不贅述。在Language:引數前面的引數會應用於所有語言,Language:引數後面的的引數會應用於相應語言,並覆蓋前面的引數。所以可以通過設定這個引數,實現單獨設定某個語言的樣式。

基礎樣式

使用BasedOnStyle:引數來設定基礎樣式,可選樣式請查閱文件。設定這個引數後就可以按照對應的樣式來格式化程式碼,新增其他引數後,會覆蓋這個樣式的對應引數設定。從VSCode的說明中可以看到,"Visual Studio" 樣式的基礎樣式是LLVM,之後是幾個調整引數。在那幾個引數中,有BreakBeforeBraces:這個引數,這個就是用來控制大括號換行的。

大括號的相關設定

使用BreakBeforeBraces:引數來設定大括號換行。可用欄位可以分為三類:

1.        大括號前不換行,以及衍生版本(在某些情況下換行)

2.        大括號前換行,以及衍生版本(在某些情況下不換行)

3.        自己定製

將引數設定為Linux即可實現函式的大括號換行,其他情況不換行。需要其他換行方式的話,請查閱文件。如果預設的幾種方式不能滿足需求的話,可以設定為BS_Custom,然後在設定BraceWrapping引數,具體設定方法請查閱文件。