项目环境
一款适用于 **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_with 当env_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_data,path将被替换为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