Build 在Sublime文本生成系统中使用自定义变量
我正在macOS上配置Sublime Text(ST)构建系统。 我想创建一个构建系统变体,将构建产品输出到我的用户库中的一个文件夹中,但是我找不到一种方法来处理这个目录 其中提到了构建系统变量的可用性,但它们都不允许我处理我的主目录 有没有一种方法可以在ST构建系统中使用自定义变量,以便以某种方式推断主目录路径 或者有没有一种方法可以使用$HOME环境变量Build 在Sublime文本生成系统中使用自定义变量,build,sublimetext3,Build,Sublimetext3,我正在macOS上配置Sublime Text(ST)构建系统。 我想创建一个构建系统变体,将构建产品输出到我的用户库中的一个文件夹中,但是我找不到一种方法来处理这个目录 其中提到了构建系统变量的可用性,但它们都不允许我处理我的主目录 有没有一种方法可以在ST构建系统中使用自定义变量,以便以某种方式推断主目录路径 或者有没有一种方法可以使用$HOME环境变量 我不想在构建系统中硬编码主目录,因为我希望它能被不同的用户使用。在构建中引入自定义变量确实是可能的,但这是一项有点复杂的任务,因为您必须编
我不想在构建系统中硬编码主目录,因为我希望它能被不同的用户使用。在构建中引入自定义变量确实是可能的,但这是一项有点复杂的任务,因为您必须编写一个崇高的插件来完成这项工作 特别是,您可以在名为
target
的sublime build
文件中包含一个键,它告诉sublime应该执行什么内部命令来执行构建。当该键不存在时(大多数情况下),它默认为exec
内部命令,该命令负责大部分构建过程,包括捕获并在面板中显示输出,根据需要注入错误模型,等等
通过创建自己的自定义WindowCommand
实例,并在sublime build
文件中包含一个target
,sublime将执行您的命令,而不是默认命令,该命令允许您根据需要解释变量
这种构建系统的一个例子是,如果您愿意走这条路线。简言之,这是一个自定义命令,它将变量展开,然后调用内部exec
命令来实际执行任务
说到这里,如果您愿意,您可以直接在命令中使用环境变量,因此,如果您的目标是在已知位置创建一个基于环境变量的文件夹,那么您可以在不做任何更改的情况下完成
这里需要注意的是,在MacOS和Linux上,shell使用$
字符来表示变量,而Sublime也使用$
来表示它自己的变量。因此,您需要执行一些“引用魔法”来让事情正常运行
如果尝试使用例如$HOME
展开到主目录,它将展开为空字符串。这是因为当Sublime准备执行构建时,它会扩展所有变量;它不知道其值的变量将替换为空字符串。这不是受支持的生成变量,因此它被视为空
然后,解决办法是“引用”美元符号<代码>\$告诉升华不要特别对待它;这允许它将$
传递给最终运行shell的命令
但是,如果您尝试这样做,就会在状态行中出现可怕的“无构建系统”错误,并且什么也不会发生。原因是sublime build
文件是JSON,在JSON\$
中是无效的转义序列;因此,构建无法加载,升华什么也不做
解决方案是使用\\$
;JSON加载程序将其解释为带引号的斜杠,它在内部转换为\$
,这使得Sublime将其转换为$
,并将其传递给命令
以下简单生成系统就是一个例子,它在“生成”面板中显示您的主目录:
{
“shell_cmd”:“echo\\\$HOME/”,
}