完全可行,速度很快,智能提示、代碼格式化、查找Symbol等等都不比VS+Visual AssistX 差。
准備
- 打開編輯器的Editor Preferences>Source Code,選擇VSCode
- 在工程的uproject文件上右鍵>Generate Visual Studio Project,就會生成一個workspace文件,雙擊即可打開visual studio code. 同時生成的還有一個.vscode文件夾。
配置VSCode
- VSCode需要的插件網上眾說紛紜,實際證明,只需要這三個就夠了:
什么clang-format之類的完全不需要,因為c/c++里面自帶了clang-format.
打開設置(Ctrl+,或者File>Preferences>Settings) 選擇Extensions>C/C++
C_Cpp:Autocomplete Default
C_Cpp:Clang_format_fallback Style Visual Studio(這里是防止Clang_format_style填寫的是file,而系統找不到.clang-format文件時候的情況)
C_Cpp:Clang_format_path 不需要填寫(默認配置好了)
C_Cpp:Clang_format_style Visual Studio(或者LLVM)
C_Cpp>Default: Cpp Standard c++11
C_Cpp:Workspace Symbols All
最后這條最重要,否則查找Symbol時候就無法識別到UE源碼中的代碼了。
注意上面的兩個format 可以取值Visual Studio, LLVM, Google, WebKit
等。推薦使用WebKit
。
##如果追求完美,可以這樣設置 官方C/C++插件自帶的clang-format版本是6.0,所以設置相關選項時要注意參考的文檔版本。 可以自行下載最新的clang-format文件,目前最新版本是7.0。 下載位置:下載 選擇編譯好的win64版本。
安裝好以后只需要找到里面的clang-format.exe 拷貝到別處(例如C:/),其余部分就可以卸載了。
然后將C_Cpp:Clang_format_path
設置為剛下載的clang-format.exe路徑: "C_Cpp.clang_format_path": "C:\\clang-format.exe",
將C_Cpp:Clang_format_style
設置為file
,表示從工作目錄或上級文件夾中尋找.clang-format
配置文件。 在工作目錄中創建一個名稱為.clang-format
的文件 windows系統中無法創建名字以.開頭的文件,可以這樣創建:打開cmd,輸入echo >.clang-format
,回車即可創建。
內容用下方內容粘貼
這里有一個專門為UE4配置好的.clang-format文件內容:
---
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Allman
BreakBeforeInheritanceComma: false
BreakInheritanceList: AfterColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: AfterColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 0
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: true
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 0
Cpp11BracedListStyle: true
DerivePointerAlignment: true
DisableFormat: false
FixNamespaceComments: true
ForEachMacros:
- for
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '.*\.generated\.h'
Priority: 100
- Regex: '.*(PCH).*'
Priority: -1
- Regex: '".*"'
Priority: 1
- Regex: '^<.*\.(h)>'
Priority: 3
- Regex: '^<.*>'
Priority: 4
IncludeIsMainRegex: '([-_](test|unittest))?$'
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
ObjCBinPackProtocolList: Never
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
RawStringFormats:
- Language: Cpp
Delimiters:
- cc
- CC
- cpp
- Cpp
- CPP
- 'c++'
- 'C++'
CanonicalDelimiter: ''
BasedOnStyle: google
- Language: TextProto
Delimiters:
- pb
- PB
- proto
- PROTO
EnclosingFunctions:
- EqualsProto
- EquivToProto
- PARSE_PARTIAL_TEXT_PROTO
- PARSE_TEST_PROTO
- PARSE_TEXT_PROTO
- ParseTextOrDie
- ParseTextProtoOrDie
CanonicalDelimiter: ''
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: true
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 4
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Auto
TabWidth: 4
UseTab: Always
...
##自動格式化 Text Editor> Formatting Format On Save和Format On Type都打勾。
#常用快捷操作 打開Symbol: 按Ctrl鍵並鼠標左鍵點擊Symbol 查找Symbol: 選擇Symbol並Ctrl+T (VAssist中的Alt+Shift+S) 轉到定義: F12 轉到聲明: Ctrl+F12 重命名: Ctrl+F2 切換頭/源文件: Alt+O (VAssist快捷鍵一樣) 快速打開文件: Ctrl+P (VAssist中的Alt+Shift+O)