概括
我最近发现 VSCode 有一个非凡的功能,它允许您定义微调的自动空格和可选的字符处理行为,这些行为会在您键入时实时应用于您的代码。
这就是我生命中所缺少的。解析器如何插入分号并不总是很清楚,因此建议始终自己插入分号。但这可能会很费力,尤其是当这种情况存在时:
不幸的是,我似乎无法让它产生它所宣传的结果。请参阅下面的详细信息。
表现出不一致的行为
重新创建行为:设置
{
// Relevant, Possibly Relevant
"editor.acceptSuggestionOnCommitCharacter": true,
"editor.detectIndentation": false,
"editor.formatOnPaste": true,
"editor.formatOnSave": true,
"editor.formatOnType": true,
"editor.insertSpaces": false,
"editor.trimAutoWhitespace": false,
"javascript.format.enable": true,
"javascript.format.insertSpaceAfterCommaDelimiter": true,
"javascript.format.insertSpaceAfterConstructor": true,
"javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": true,
"javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": true,
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces": false,
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": false,
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true,
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": true,
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": true,
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": false,
"javascript.format.insertSpaceAfterSemicolonInForStatements": true,
"javascript.format.insertSpaceBeforeAndAfterBinaryOperators": true,
"javascript.format.insertSpaceBeforeFunctionParenthesis": true,
"javascript.format.placeOpenBraceOnNewLineForControlBlocks": false,
"javascript.format.placeOpenBraceOnNewLineForFunctions": false,
"javascript.format.semicolons": "insert",
// Not Relevant, Probably Not Relevant
"editor.foldingHighlight": false,
"editor.fontFamily": "'Cascadia Mono', 'tic-80 font', 'Courier New', monospace",
"editor.fontSize": 13,
"editor.glyphMargin": false,
"editor.letterSpacing": 0,
"editor.lineHeight": 2.5,
"editor.lineNumbers": "on",
"editor.matchBrackets": "never",
"editor.minimap.renderCharacters": false,
"editor.occurrencesHighlight": false,
"editor.renderControlCharacters": true,
"editor.renderWhitespace": "selection",
"editor.scrollbar.verticalScrollbarSize": 0,
"editor.smoothScrolling": true,
"editor.tabSize": 4,
"editor.tokenColorCustomizations": {
"comments": "#16662B"
},
"editor.wordWrap": "wordWrapColumn",
"editor.wordWrapColumn": 108,
"editor.wrappingIndent": "same",
"subtleBrackets.disableNative": false,
"subtleBrackets.style": {
"borderWidth": "2px",
"borderColor": "#528BFF"
},
"terminal.integrated.cursorBlinking": true,
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.cursorWidth": 2,
"terminal.integrated.defaultLocation": "editor",
"terminal.integrated.fontFamily": "tic-80 font",
"terminal.integrated.fontSize": 12,
"terminal.integrated.lineHeight": 1.75,
"window.menuBarVisibility": "toggle",
"window.titleBarStyle": "native",
"workbench.colorCustomizations": {
"[CyberWave]": {
"statusBar.noFolderBackground": "#FFB608",
"statusBar.noFolderBorder": "#FFB608",
"statusBar.noFolderForeground": "#000000",
"statusBarItem.hoverBackground": "#ff0000"
}
},
"workbench.colorTheme": "CyberWave",
"workbench.editor.showTabs": true,
}
重新创建行为:说明
键入
console.log()
并按 ENTER。• 注意分号插入成功。
键入
{
并按 ENTER。键入
console.log()
并按 ENTER。• 请注意,格式化程序会忽略缺少的分号。
键入
{
并按 ENTER。按 DELETE 删除右大括号和光标之间的新行。
• 右大括号和光标现在应该在同一行。
按 DELETE 删除光标和右大括号之间的空白。
键入
console.log()
并按 ENTER。• 注意分号插入成功。
左键单击将光标放在第 7 行右括号的右侧,然后按 ENTER。
键入
console.log()
并按 ENTER。• 注意分号插入成功。
左键单击以将光标再次放在第 7 行右括号的右侧,然后按 ENTER。
键入
console.log()
并按 ENTER。• 请注意,格式化程序再次忽略丢失的分号。
预期成绩
console.log(); // Semicolon
{
console.log(); // Semicolon
{
console.log(); // Semicolon
}
}
console.log(); // Semicolon
console.log(); // Semicolon
实际结果
console.log();
{
console.log() // No semicolon
{
console.log();
}
}
console.log() // No semicolon
console.log();