2016-11-06 47 views
0

我已经启动了Vim(v8)并为css3准备了适当的语法荧光笔。我使用名为precss的postcss插件为我的代码中的语法提供“SASS”。Vim编辑器:最后一个孩子和:第一个孩子嵌套的css错误

但是,当我使用“&:last-child”或&:first-child的嵌套选择器时,语法会引发错误。它不会破坏代码或任何内容,但是“红色”错误对我来说太过分了。检查下面的屏幕截图。

任何人都可以弄清楚如何让这个错误发生?我使用名为vim-css3-syntax的插件,它包含scss语法高亮显示。

编辑:得到它固定通过下载https://github.com/cakebaker/scss-syntax.vim,然后提前加入au BufRead,BufNewFile *.css set filetype=scss.css

感谢。

+0

该缓冲区的文件类型几乎肯定是'css',没有'&'。将其更改为'sass'或'scss'。 – romainl

+0

好的,但我没有使用sass或scss。现在我该怎么做?我正在使用postcss和一个名为precss的插件。 – TheEarlyMan

+0

不是。你写的是SASS或SCSS(嵌套+'&'),因此你不能指望它是有效的CSS,因此你会得到CSS错误。使用正确的文件类型。 – romainl

回答

0

事实上,您在CSS中使用SCSS语法(嵌套块,&等)会使CSS无效。

如果你想避免语法错误,你有两条路:

  • 停止使用SCSS语法在CSS文件,
  • 确保您的文件被认为是它是什么: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有效而获得错误。

+0

这里的整点是我不使用SASS实际包含.scss扩展名。我正在使用POSTCSS,它绝对允许在CSS文件中编写SCSS语法。而且,你给的比较绝对没有意义。 SCSS不是一种不同的语言。它只是一个预处理器。就像coffeescript对javascript一样。你被允许在js文件中写coffeescript不是吗? – TheEarlyMan

+0

可以放入CSS文件的内容由标准定义,Vim使用该脚本定义CSS文件的语法。由于CSS不允许嵌套,因此不能合理地期望默认语法脚本允许嵌套。 **您使用PostCSS的事实并且您不关心标准对于Vim和CSS的默认语法脚本完全不了解。**这就是为什么您会遇到错误:您在'* .css'中编写的内容文件不是有效的CSS。如果你不想要错误,使用适合你*实际*写作的文件类型:'scss'。 – romainl

+0

明白了。非常感谢! – TheEarlyMan