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