Действительно возможно ввести пользовательские переменные в сборку, но это довольно сложная задача, для которой вам нужно написать Sublime Plugin.
В частности, есть ключ, который вы можете включить в файл sublime-build
с именем target
, который сообщает Sublime, какую внутреннюю команду он должен выполнить для выполнения сборки. Когда этот ключ отсутствует (что происходит большую часть времени), по умолчанию используется внутренняя команда exec
, которая отвечает за большую часть процесса сборки, включая захват и отображение выходных данных на панели, при необходимости вводя фантомы ошибок. и т. д.
Создав свой собственный пользовательский экземпляр WindowCommand
и включив target
в файл sublime-build
, Sublime выполнит вашу команду вместо значения по умолчанию, что позволит вам интерпретировать переменные по своему усмотрению.
Примером такой системы сборки является , доступная здесь , если вы хотите пойти по этому пути. В двух словах, это пользовательская команда, которая раскрывает переменные и затем вызывает внутреннюю команду exec
, чтобы фактически выполнить эту работу.
Учитывая все вышесказанное, вы можете использовать переменные окружения в командах напрямую, если хотите, поэтому, если ваша цель - создать папку в известном месте, основанную на переменной окружения, вы можете сделать это без изменений на все.
Подвох в том, что в MacOS и Linux символ $
используется оболочкой для обозначения переменной, но Sublime использует $
для обозначения своих собственных переменных. Таким образом, вам нужно немного «процитировать магию», чтобы заставить вещи работать.
Если вы попытаетесь использовать, например, $HOME
для расширения до домашнего каталога, он развернется в пустую строку. Это потому, что когда Sublime готовится выполнить сборку, он расширяет все переменные; переменные, значения которых он не знает, заменяются пустой строкой. Это не поддерживаемая переменная сборки, поэтому она считается пустой.
Решение тогда состоит в том, чтобы «процитировать» знак доллара; \$
говорит Возвышенному не обращаться с ним особо; это позволяет ему передавать $
команде, которая в конечном итоге запускает оболочку.
Однако, если вы попытаетесь , что , вы получите страшную ошибку «No Build System» в строке состояния, и ничего не произойдет. Причина этого в том, что файл sublime-build
представляет собой JSON, а в JSON \$
- недопустимая escape-последовательность; таким образом, сборка не загружается, а Sublime ничего не делает.
Существует решение использовать \\$
; загрузчик JSON интерпретирует его как косую черту в кавычках, которая внутренне преобразуется в \$
, что заставляет Sublime преобразовать его в $
и передать его команде.
Примером этого является следующая простая система сборки, которая отображает ваш домашний каталог на панели сборки:
{
"shell_cmd": "echo \\$HOME/",
}