ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

项目环境

daniele-niero ST3

一款适用于 **SublimeText 3** 的插件,允许在 .sublime-project 文件中设置环境变量。

标签 环境变量项目

详细信息

安装次数

  • 总计 6K
  • Win 3K
  • Mac 2K
  • Linux 2K
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 1 0 0 1 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1
Mac 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

Readme

源代码
bitbucket.​org

项目环境

一款针对 SublimeText 的插件,允许在 .sublime-project 文件中设置环境变量。


描述

使用 项目环境 设置的变量在整个 Sublime 中都可用。构建、脚本,甚至其他插件也可以依赖和利用它们。

项目环境 的优点是,它为每个项目设置的变量都是独立的。
项目环境 可以检测到 Sublime 项目的变更并相应地重新设置环境变量。更重要的是,如果您同时打开了两个或更多 Sublime 的窗口,每次您将焦点放在其中一个窗口上时,项目环境 都会运行并重新设置变量。

这一切对用户来说都是完全透明的。


设置

您可以在 ProjectEnvironment.sublime-settings 中更改一些设置

  • print_output
    当设置为 true 时,一些信息会被打印到控制台。

  • set_sublime_variables
    如果为 true,还可以设置 Sublime 内部的一些变量
    这些变量包括
    “project_path”, “project”, “project_name”, “project_base_name”, “packages”

  • sublime_variables_prefix
    给这些变量添加一个前缀可能很有用,这样就不会与您的变量冲突

  • sublime_variables_capitalized
    如果您希望,所有这些变量都可以大写。
    例如: “project” -> “PROJECT”

  • command_line_to_wrap_extensions 插件将 treat 作为命令行文件扩展名的列表。具有这些扩展名的文件将在外部进程中“源”记录,如果它们设置变量,环境将与 Sublime 的基本环境进行比较。如果基本 Sublime 环境中没有变量,它们将添加到其中。默认值为 [".bat", ".sh"]

  • execute_ext_withenv_file(见下文)既不是Json文件也不是在command_line_to_wrap_extensions中定义的文件时,它将被执行。如果它返回一个有效的Json字符串(例如{"my_var": 1}

    "execute_ext_with": {
        ".py": "python"
    }
    

设置项目变量

变量可以在.sublime-project文件的“settings”部分设置。
为了避免可能的冲突,首先要做的是在“settings”中创建一个新的对象,称为“project_environment”

"settings":
{
    "project_environment":
    {
    }
}

“project_environment”内部可以定义5个项目

  • env
  • env_file
  • windows
  • osx
  • linux
"settings":
{
    "project_environment":
    {
        "env": {},
      "env_file": "",
        "windows": {},
        "osx": {},
        "linux": {}
    }
}

“env”用于不同系统之间的通用、可移植环境变量。“envfile”是一个可执行文件。(见下文)_“windows”“osx”“linux”用于系统特定的变量。
请注意,这些都不是强制的。

  • env是一个字典。每个"key": "value"对都将被设置为一个环境变量。
  • env_file是指向外部文件的路径:该文件可以是
    • 一个包含定义变量的单个对象的Json文件,类似于env
    • 一个可执行文件。这可以是任何可以执行的文件,而且它必须返回一个有效的Json字符串,其内容反映env的路径可以相对于项目文件本身(例如:“../../env.sh”)
  • windows | osx | linux是可以包含的对象
    • env,与主env完全相同,但用于系统特定的变量
    • env_file,与主env_file完全相同,除了此处还可以是非系统特定的命令行文件,如.sh或.bat,取决于操作系统。如果此文件设置变量,这些变量也将被设置在Sublime中。仅用于系统特定变量。

注意
env_file中的变量总是首先设置。这意味着env可能会覆盖env_file的设置。

这是项目文件的一个示例

{
    "folders":
    [
        {
            "path": "."
        }
    ],
    "settings":
    {
        "project_environment":
        {
            "print_output": true,
            "set_sublime_variables": true,
            "sublime_variables_prefix": "sublime_",
            "sublime_variables_capitalized": true,
            "env_file": "./env/generic_env.py"
            "env":
            {
                "CROSS_PLATFORM_ENV": "cross_platform_env"
            },
            "windows":
            {
                "env":
                {
                    "IN_LINE_ENV": "in_line_env_window"
                },
                "env_file": "./env/env_win.bat"
            },
            "osx":
            {
                "env":
                {
                    "IN_LINE_ENV": "in_line_env_mac"
                },
                "env_file": "./env/env_osx.sh"
            },
            "linux":
            {
                "env":
                {
                    "IN_LINE_ENV": "in_line_env_linux"
                },
                "env_file": "./env/env_linux.sh"
            }
        }
    }
}

使用变量解析项目路径

Sublime不能解析项目文件夹路径中的变量。为了解决这个问题,项目环境允许您在文件夹路径旁边定义另一个条目,称为path_template
项目环境将解析path_template中的任何环境变量,并用结果替换path

例如

{
    "folders":
    [
        {
            "path": ".",
            "path_template": "$MY_PATH"
        }
    ],
    "settings":
    {
        "project_environment":
        {
            "windows":
            {
                "env": { "MY_PATH": "some/location/windows" }
            },
            "osx":
            {
                "env": { "MY_PATH": "some/location/mac_osx" }
            },
            "linux":
            {
                "env": { "MY_PATH": "some/location/linux" }
            }
        }
    }
}

当项目环境运行时,无论是自动运行还是调用命令update_project_datapath将被替换为MY_PATH的值,并且它将根据运行的平台而有所不同。

记住
如果存在path_template,将替换path中的任何值,因此不要在其中设置任何值,因为这将被覆盖。


在构建系统中使用变量

一旦您使用项目环境设置了变量,您就可以以许多不同的方式使用它们。它们的一个常见用途是在Sublime的构建中。

想象一下,您设置了一个名为MY_TEST_VARIABLE的变量,并设置为Hello World!!,然后您可以这样做

{
    "name": "Super Test",
    "shell_cmd": "echo %MY_TEST_VARIABLE%"
}

在任何打开的Sublime窗口中,启动Super Test构建器,结果将正好是Hello World!!

{
    "build_systems":
    [
        {
            "name": "Super Test",
            "shell_cmd": "echo %MY_TEST_VARIABLE%"
        }
    ],
    "folders":
    [
        {
            "path": "."
        }
    ],
    "settings":
    {
        "project_environment":
        {
            "env":
            {
                "MY_TEST_VARIABLE": "Hello World!!"
            }
        }
    }
}

针对Linux或Mac的一些建议

上面的例子是为Windows准备的,当然您也可以在Linux和Mac上做相同的事情,但您必须确保避免变量的转义。

{
    "build_systems":
    [
        {
            "name": "Super Test",
            "shell_cmd": "echo \\$MY_TEST_VARIABLE"
        }
    ],
    "folders":
    [
        {
            "path": "."
        }
    ],
    "settings":
    {
        "env":
        {
            "Darwin":
            {
                "MY_TEST_VARIABLE": "Hello World!!"
            }
        }
    }
}

注意在$MY_TEST_VARIABLE之前的双反斜杠。这非常重要。Sublime文档的摘录解释了原因

变量

Sublime的变量将在“cmd”、“shell_cmd”或“working_dir”选项指定的任何字符串中进行展开。

如果需要在这些选项之一中指定文字美元符($),则必须使用\进行转义。由于JSON也使用反斜杠进行转义,所以$需要写成\\$}


项目环境如何从命令文件收集变量

当命令文件的路径(.bat, .sh等)分配给env_file时,插件将以子进程的方式运行它。

然后,它会收集该子进程中的所有环境变量,并将它们返回到主进程,新的变量或值不同的变量将被附加到主环境中。

*(使用python的subprocess.Popen,shell=False)。


安装

使用Package Control

前往偏好设置 -> Package Control -> 安装包,然后在文本框中输入“项目环境”

点击它,包将安装并可供使用。

使用Git

通过菜单项偏好设置 -> 浏览包来定位你的Sublime Text Packages目录。

在包目录内,克隆Project Environment到其中
git clone https://bitbucket.org/daniele-niero/sublimeprojectenvironment