Sublime构建系统在本地服务器地址打开文件

时间:2015-07-15 20:27:20

标签: bash localhost sublimetext3

对于我在本地服务器(在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中则替换。我很困惑。

1 个答案:

答案 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中运行唯一命令。