我将以下内容保存到我的用户文件夹中的node-sass.sublime-build
{
"shell_cmd": "node-sass.cmd $file",
"selector": "source.scss"
}
我有一个slideEditor.scss
文件。如果我明确地将构建系统设置为node-sass
,则ctrl + b可以正常工作,但是如果我将其设置为“自动”,则ctrl + b不执行任何操作,不会将任何内容记录到控制台。怎么回事?根据{{3}}我正在做的一切都是正确的。
答案 0 :(得分:2)
首先,对您的问题的简短回答:将"source.scss"
更改为"source.sass"
,自动构建系统应该可以正常工作。
背景和一些替代方案:
Sublime中的语法突出显示(和TextMate,其中的想法最初来自)基于每种语言的.tmLanguage
语法定义。这些XML / Plist文件基本上是一系列正则表达式,它们将匹配项分配给作用域。例如,在以下CSS中:
body {
margin: 0;
}
单词body
的范围为source.css meta.selector.css entity.name.tag.css
。 source.css
是基本范围,或者是所有其他范围的父级。在Python文件中,基本作用域为source.python
,HTML为text.html.basic
,Javascript为source.javascript
等。此基本作用域为"selector"
正在寻找 - 它与文件名无关。
您使用的语法定义的基本范围为source.sass
,这就是为什么您的构建系统无法正常工作,除非您专门选择它(它会覆盖selector
属性)。有两种方法可以解决这个问题。首先,正如我上面提到的,只需将选择器更改为source.sass
,您就可以全部设置。我更喜欢的第二个是使用Package Control提供的Syntax Highlighting for Sass包。首先,它为SASS和SCSS提供了单独的语言定义,因此您可以为两者进行适当的突出显示。正如您所期望的那样,SCSS的基本范围为source.scss
,而对于SASS,source.sass
,因此如果您使用这两种语言,则可以拥有单独的构建系统。此外,语法定义比您正在使用的程序包更丰富,因此如果您使用recommended color schemes之一,您将会非常好地突出显示所有各种元素,关键字最后,该软件包包括一堆完成和其他附加功能,使编写样式表变得更加容易。