sublimetext - 为什么 sublime 不使用选择器自动检测这个自定义 sublime-build ?

标签 sublimetext sublimetext3 sublime-build

我将以下内容保存到我的用户文件夹中的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.cs​​ssource.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/

相关文章:

sublimetext3 - 在 Sublime Text 3 中自动将缩进从 2 个空格转换为 4 个空格

sublimetext2 - 禁用 Sublime Text 片段中的最后一个选项卡光标移动

sublimetext - 在 Sublime Text 中启用重音符号 (`) 自动引号

vim - 如何更改intellij idea中的编辑器行为

sublimetext3 - 如何在Sublime Text 3中配置5个按钮鼠标

c++ - 如何使用多个文件为C++设置Sublime 3构建

sublimetext3 - Sublime Text 在构建输出中显示 "NUL"个字符

sublimetext - 如何在任何文本编辑器中同时向多行添加制表符空间

sublimetext2 - Sublime Text : text list of open files