在Sublime Text设置文件中使用Windows环境变量

Ned*_*tin 5 environment-variables sublimetext sublimetext2

我有一个需要从崇高文本2个设置文件(包Name.sublime的设置文件)中引用的Windows环境变量,特别是%APPDATA%%TMP%

这是可能的,如果是的话,怎么样?

例如,以下是来自一个包设置的一行,它需要处理多个用户,因此使用不同的用户名:

"backup_dir": "C:\\Users\\Username\\AppData\\Local\\Temp\\SublimeBackup"
Run Code Online (Sandbox Code Playgroud)

作为一个例子,这里有一个我刚刚遇到的问题:我安装了Sublime Text 2,它运行在多台计算机上(即我复制其数据以保持多次安装之间的设置等),但我有以下内容命令:

{ "caption": "Backup to Server (Local to Server)", "command": "exec", "args": { "cmd": ["local-to-server.cmd"] } },
Run Code Online (Sandbox Code Playgroud)

不幸的是,文件"local-to-server.cmd"是相对于Sublime Edit中当前打开的文件,因此该命令很少有效.我需要的是:

{ "caption": "Backup to Server (Local to Server)", "command": "exec", "args": { "cmd": ["%APPDATA%\Sublime Text 2\Packages\User\local-to-server.cmd"] } },
Run Code Online (Sandbox Code Playgroud)

或者一些类似的引用公共位置的方法,然后我可以建立一个相对路径.

sku*_*oda 3

感谢@schlamar 对设置的更正。我没有意识到他们在整个会议期间坚持不懈。我的所有插件都在本地使用它们,我没有对它们进行任何修改,但很高兴知道这一点。这是一个在 ST 加载时扩展变量的插件。应该适用于 ST2 和 ST3。

import os
import sublime

VERSION = int(sublime.version())

def expand_settings():
    expand_settings = {
        "<setting file names>": [
            "<setting keys to expand>"
        ]
    }
    for filename, setting_keys in expand_settings.items():
        s = sublime.load_settings(filename)
        for key in setting_keys:
            value = s.get(key)
            s.set(key, os.path.expandvars(value))

def plugin_loaded():
    expand_settings()

if VERSION < 3006:
    expand_settings()
Run Code Online (Sandbox Code Playgroud)