【问题标题】:wrong auto comments for scss in vscodevscode中scss的错误自动注释
【发布时间】:2021-10-15 01:13:24
【问题描述】:

我的 .scss 文件中的自动 cmets 存在问题。通过自动 cmets,我的意思是 'CTRL + /' 注释掉选定的代码。当我在我的 scss 文件中并执行此操作时,它会添加 JS cmets '//'。所以输出看起来像这样:

body {
  font-size: 1rem;
  line-height: 1.4;
  // overflow-x: hidden;
}

什么时候应该:

body {
  font-size: 1rem;
  line-height: 1.4;
  /* overflow-x: hidden; */
}

如果我将 .scss 文件重命名为 .css,那么自动 cmets 可以正常工作。我猜这与 VSCode 内部的设置有关,无论是用户设置还是工作空间设置?

【问题讨论】:

    标签: visual-studio-code vscode-settings


    【解决方案1】:

    我相信这是按预期工作的,正如 SCSS supports both ways 所评论的那样,我认为 Visual Studio Code 中没有任何设置可以更改以更改评论样式的工作方式。

    Ctrl + / 是“Toggle Line Comment”,也就是//的方式。如果要使用多行注释格式进行注释,则可以改为突出显示要注释的内容,然后执行 Shift + Alt + A.

    但是,还有另一种方法可以更改行注释的工作方式:

    • 找到 Visual Studio Code 在您的系统上的安装位置,然后转到资源 → 应用程序 → 扩展程序 → scss
    • scss 文件夹中应该有一个"language-configurations.json" 文件。打开它。
    • lineComment 属性更改为空白字符串,或将其彻底删除。
    "lineComment": ""
    
    • 保存文件,然后重新启动 Visual Studio Code。现在,当您执行 Ctrl + / 时,它应该使用您喜欢的样式进行注释。

    【讨论】:

    • 我不认为语言配置文件中的lineComment 可以采用数组。
    • 当我尝试它时它会显示Incorrect type. Expected "string".
    • 我认为它对您有用的原因是因为您“破坏”了lineComment 值,因此它退回到使用未更改的blockComment 值作为行 cmets。如果我完全删除 lineComment 键/值,它对我有用。如果您只是将lineComment":"" 设置为空字符串,它也可以工作。
    • @Mark 我实际上使用记事本++ 编辑了文件,所以我没有看到错误,但是......那我想也可以吗?我想这更像是一种破解而不是修复。
    • 是的,有点幸运,因为它优雅地使用了 blockComment 值,并且 blockComment 值是 OP 想要的线路 cmets。我将添加一个关于也处理文件覆盖问题的替代方案的答案。支持你的。
    【解决方案2】:

    请参阅@Timothy 回答的 cmets。我之前编写了一个扩展程序来处理这些问题,Custom Language Properties,它允许您轻松更改许多语言的行或块 cmets 等内容。

    但是将lineComment 设置为OP 所需的["/*","*/"] 不起作用。在查看 scss 语言配置文件时,行注释值不允许使用数组值。但删除 lineComment 键或将其设置为空字符串 "" 是有效的。

    但是,尽管可能很少见,但任何语言配置文件都可能在 vscode 更新时被覆盖,您必须返回并再次更改文件。因此扩展名。

    使用此设置:

    "custom-language-properties": {
      "scss.comments.lineComment": ""
    }
    

    这完成了与编辑底层语言配置文件相同的事情。幸运的是,至少在这种情况下,当 lineComment 值丢失或不合适时,显然 vscode 将应用 blockComment 值。幸运的是,blockCcomment 风格正是 OP 想要的。

    【讨论】:

      【解决方案3】:

      这是 SCSS 的有效注释语法,它可能是正确的默认值。

      单行 cmets(以 // 开头)总是从编译输出中删除,这通常是您想要的。

      多行 cmets (/* comment */) 仅在 compressed 模式下被删除。

      来源:Sass: Comments

      【讨论】:

        猜你喜欢
        • 2021-02-24
        • 1970-01-01
        • 1970-01-01
        • 2018-12-27
        • 2022-11-14
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        • 2021-11-07
        相关资源
        最近更新 更多