2

概括


我最近发现 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,
    }

重新创建行为:说明


  1. 键入console.log()并按 ENTER。

    注意分号插入成功。


  1. 键入{并按 ENTER。

    键入console.log()并按 ENTER。

    请注意,格式化程序会忽略缺少的分号。


  1. 键入{并按 ENTER。

    按 DELETE 删除右大括号和光标之间的新行。

    右大括号和光标现在应该在同一行。

    按 DELETE 删除光标和右大括号之间的空白。

    键入console.log()并按 ENTER。

    注意分号插入成功。


  1. 左键单击将光标放在第 7 行右括号的右侧,然后按 ENTER。

    键入console.log()并按 ENTER。

    注意分号插入成功。


  1. 左键单击以将光标再次放在第 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();
4

0 回答 0