【问题标题】:Sublime build system to open file at local server addressSublime 构建系统在本地服务器地址打开文件
【发布时间】:2015-07-15 20:27:20
【问题描述】:

对于我在本地服务器的帮助下开发的网站(在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 中起作用。我很困惑。

【问题讨论】:

  • 我认为 sublime 不能以这种方式访问​​环境变量。如果您愿意,可以尝试创建一个使用环境变量的脚本,然后在 sublime 构建中调用该脚本文件。
  • @sergioFC 你在谈论文件和项目路径吗?这些由 Sublime 维护。它们不是环境变量。
  • 对不起,我知道它们是环境变量,因为您在 bash 的 echo 指令中使用了该变量。您是通过 cygwin 还是 mingw 在 Windows 中使用 bash?如果是这样,请注意当您在 sublime 构建中使用命令时,它可能由 Windows 控制台而不是 bash 执行。
  • 这实际上是在睡觉时想到的。我正在使用 Git Bash。因此,对于 Windows,我正在寻找不同的解决方案。我去看看。谢谢。
  • 您应该在变量 (%) 中使用替换。

标签: bash localhost sublimetext3


【解决方案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%"
            }
        }
    ]
}

问题在于 windows 替换和变量分配,而不是 sublime 构建。

正如在 chat 和 cmets 中所说,使用实值变量需要多次调用,因为如果不使用,窗口将在解析时扩展它们的值,然后在执行时分配所需的值。此外,shell_cmd 可用于在 shell 中运行独特的命令。

【讨论】:

  • 当我用shell_cmd 替换cmd 时,构建系统完全停止工作。
  • 您是否删除了 cmd start /k 并更改了字符串的数组?
  • 是的,我删除了"start", "cmd", "/c" 加上"shell": true 并将cmd 替换为shell_cmd
  • 并且还删除了数组和任何尾随逗号?它对我有用,我使用了一个使用 Tools>BuildSystem>new BuildSystem 创建的简单构建系统,但我认为这与问题无关。控制台上有任何错误或消息吗?
  • 好吧,原来是我没注意。我忘了删除[]。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 2016-10-05
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 2020-02-26
相关资源
最近更新 更多