【问题标题】:Vim Editor :last-child and :first-child nested css errorVim 编辑器 :last-child 和 :first-child 嵌套 css 错误
【发布时间】:2016-11-07 16:52:03
【问题描述】:

我已经启动了 Vim (v8) 并为 css3 准备了适当的语法高亮显示。我正在使用名为 precss 的 postcss 插件在我的代码中提供类似“SASS”的语法。

但是,当我使用带有“&:last-child”或&:first-child 的嵌套选择器时,语法会引发错误。它不会破坏代码或任何东西,但那个“红色”错误让我分心。检查下面的屏幕截图。

任何人都可以弄清楚如何使这个错误消失?我使用了一个名为 vim-css3-syntax 的插件,它包括 scss 语法高亮。

编辑:通过下载 https://github.com/cakebaker/scss-syntax.vim 然后添加 au BufRead,BufNewFile *.css set filetype=scss.css 修复它

提前致谢。

【问题讨论】:

  • 该缓冲区的文件类型几乎可以肯定是css,而没有&。将其更改为 sassscss
  • 好的,但我没有使用 sass 或 scss。现在我该怎么做?我正在使用 postcss 和一个名为 precss 的插件。
  • 没有。您正在编写的是 SASS 或 SCSS(嵌套 + &),因此您不能指望它是有效的 CSS,因此您会收到 CSS 错误。使用正确的文件类型。
  • 我没有完全使用 SASS。我使用 PostCSS - 它有一个插件允许像 SCSS 这样的语法。

标签: css vim sass


【解决方案1】:

您在 CSS 中使用 SCSS 语法(嵌套块、& 等)这一事实使您的 CSS 无效。

如果你想避免语法错误,你有两个途径:

  • 停止在您的 CSS 文件中使用 SCSS 语法,
  • 确保您的文件被识别为:SCSS。

我认为第一条路径是最明智的。毕竟谁在*.rb 文件中编写JavaScript 或在*.css 文件中编写SCSS?但是,如果您选择第二个,您可以简单地这样做:

setf scss

--- 编辑---

假设我们有这样的代码:

body {
    background-color: white;
}

它既是有效的 CSS 又是有效的 SCSS,因为 SCSS 是 CSS 的 超集。任何有效的 CSS 都会自动成为有效的 SCSS。无论文件扩展名(*.css*.scss)和文件类型(cssscss)如何,Vim 都会愉快地显示它而不会出现任何错误。

现在,假设我们有这样的代码:

body {
    h1 {
        background-color: $brand-1;
    }
}

它是有效的 SCSS,但不是有效的 CSS。如果您将该代码写入具有css 文件类型的*.css 文件中,则会出现错误,因为它不是CSS。如果您将该代码写入具有 scss 文件类型的 *.scss 文件中,则不会出现错误,因为它是有效的 SCSS。

【讨论】:

  • 这里的重点是我没有使用 SASS 来实际包含 .scss 扩展名。我正在使用 POSTCSS,并且绝对允许在 CSS 文件中编写 SCSS 语法。此外,您给出的比较完全没有意义。 SCSS 不是一种不同的语言。它只是一个预处理器。就像coffeescript 之于javascript。你可以在js文件中写coffeescript不是吗?
  • 可以放入 CSS 文件的内容由标准定义,Vim 用于定义 CSS 文件语法的脚本遵循该标准。由于 CSS 不允许嵌套,因此您不能合理地期望默认语法脚本允许嵌套。 Vim 和 CSS 的默认语法脚本都完全不知道您使用 PostCSS 并且不关心标准的事实。 这就是您得到错误的原因:您在 @987654335 中写的内容@ 文件不是有效的 CSS。如果您不想出错,请使用适合您实际所写内容的文件类型:scss.
猜你喜欢
  • 2013-03-03
  • 2011-12-17
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
  • 2017-01-31
  • 1970-01-01
相关资源
最近更新 更多