vscode python 格式化 autopep8 禁用 E266

Ale*_*x F 5 python autopep8 visual-studio-code

我正在尝试将 Visual Studio Code 设置为使用格式autopep8但忽略 E266(块注释的前导“#”太多)以允许在注释中使用 Markdown 子标题。

--ignore 设置似乎适用于其他错误,例如 E302,但不适用于 E266。

我的格式化配置如下,即使 E302 被忽略,E266 仍然被强制执行

    "python.formatting.provider": "autopep8",
    "python.formatting.autopep8Args": [
        "--ignore",
        "E266,E302",
        // E266 = multiple-# in comments
        // E302 = expect 2 blank lines before def
    ],
Run Code Online (Sandbox Code Playgroud)

使用上面的配置,autopep8 将忽略 E302(因此它不会在 def 之前插入行),但它会继续删除每个 E266 注释中的额外 # 。

我可以将 Linter 设置为忽略 E266,这样它就不会在 UI 中显示下划线,但修改代码的格式化程序不会显示下划线。这是运行良好的Linter 配置

    "python.pythonPath": "...path...",
    "python.linting.pep8Enabled": true,
    "python.linting.pep8Args": [
        "--ignore=E266"
        // E266 = multiple-# in comments
    ],
    "python.linting.pylintPath": "...path...",
    "python.linting.pylintArgs": [
        "--load-plugins",
        "pylint_django"
    ],
    "python.linting.pylintEnabled": true,
Run Code Online (Sandbox Code Playgroud)

是否存在类似于 E266 的重叠规则导致格式化程序尽管忽略 E266 但仍然进行更改?不会出现这样的情况,因为忽略 E266 时 Linter 无法识别正在编辑的行。

example.py用于示例用法

## These lines will lose one "#" when Formatted in VSCode
## Even though we set it to ignore E266
Run Code Online (Sandbox Code Playgroud)