对于我在本地服务器(在http://127.0.0.1:4000
下运行)的帮助下开发的网站,我尝试为我的Sublime Text项目设置编写构建系统。
我可以访问这些变量(由Sublime Text提供):
$file
:存储磁盘上文件的绝对路径:C:\Users\User\dev\repos\base\dir\index.html
$project_path
:存储项目文件的位置(通常是项目的根目录):C:\Users\User\dev\repos\base
现在我想要的是$file
的内容,而不是我想要的$project_path
http://127.0.0.1:4000/~base
。对于该任务,我使用 Bash cmd.exe:
CALL SET result=%file:%project_path%=http://127.0.0.1:4000\~base\% && echo %result%
这给出了期望的结果,但我似乎无法将其应用于Sublime Text内的构建系统。
目前,我尝试生成正确的地址并通过cmd.exe输出:
{
"build_systems":
[
{
"name": "Preview in browser",
"selector": "text.html",
"windows":
{
"shell": true,
"cmd": [
"start", "cmd", "/k",
"CALL SET result=$file:$project_path=http://127.0.0.1:4000\\~base\\ && echo $result"
]
}
}
]
}
结果:
> echo %result%
C:\Users\Philipp\dev\repos\base\dir\index.html:C:\Users\Philipp\dev\repos
\base=http://127.0.0.1:4000\~base\
因此,在构建系统中进行替换时,替换不起作用,但在cmd.exe中则替换。我很困惑。
答案 0 :(得分:1)
您可以这样做:
{
"build_systems":
[
{
"name": "Preview in browser",
"selector": "text.html",
"windows":
{
"shell_cmd": "CALL SET filePath=$file && CALL SET result=%filePath:$project_path=http://127.0.0.1:4000\\~base% && CALL C:/Progra~2/Google/Chrome/Application/chrome.exe %result%"
}
}
]
}
问题在于窗口替换和变量,而不是使用崇高的构建。
正如在聊天和评论中所说的那样,使用实际值变量需要多个CALL,因为如果不使用,则在执行时想要的值被赋值之前,将在分析时扩展它们的值。此外,shell_cmd
可用于在shell中运行唯一命令。