Как запустить Sublime и определить синтаксис файла за один раз?

Звучит так же лениво, как и я. Мне было интересно, можно ли открыть файл с возвышенным использованием (командная строка) и в той же команде определить ожидаемый синтаксис.

Допустим, на Mac установлена ​​команда subl, поэтому $ subl .bash_something откроет .bash_something, тогда мы должны выбрать синтаксис "шелл скрипт (bash)" из списка. что было бы действительно хорошо (для меня, ленивый), это включить синтаксис команды в качестве аргумента. т.е.

$ subl -x bash .bash_something 

или что-то типа того. это, очевидно, не работает, но мне было интересно, есть ли подобное решение или его можно включить

2 ответа

К сожалению, я не могу найти способ динамически установить синтаксис из командной строки. subl имеет --command опция, которая позволяет вам выполнить команду Sublime при загрузке указанного файла, каталога или проекта. Однако команда для изменения синтаксиса представления - set_file_type - принимает аргумент в форме ("syntax": "Packages/PackageName/SyntaxName.sublime-syntax") (или же SyntaxName.tmLanguage). Насколько я могу судить, вы просто не можете передавать аргументы командам, запускаемым из командной строки. Я открыл вопрос, чтобы запросить улучшение.

Теперь это не значит, что все потеряно. Если у вас есть только несколько типов файлов, которые не известны Sublime, откройте их и выберите View -> Syntax -> Open all with current extension as...и выберите синтаксис, который вы хотите. Если по какой-то причине этого недостаточно, или вы хотите более детальный контроль над тем, какие именно имена файлов (а не только какие расширения) открываются как что, проверьте ApplySyntax плагин. Это позволяет вам использовать регулярные выражения, чтобы точно определить, какие шаблоны файлов вы определяете как какой синтаксис.

Команды теперь могут принимать аргументы в Sublime 3. Я смог достичь этой функциональности с помощью функции bash.

Вы можете передать аргументы --command опция со встроенным JSON и экранированными кавычками. Эта команда изменит синтаксис на Bash для текущего активного файла в Sublime:

subl --command "set_setting {\"setting\": \"syntax\", \"value\": \"Packages/ShellScript/Shell-Unix-Generic.sublime-syntax\"}"

Я создал простую функцию bash и нашел ее в своем .bash_profile обернуть эти две команды вместе, чтобы активировать / открыть файл, а затем изменить synax:

function subl_bash() {
    subl "$1" && subl --command "set_setting {\"setting\": \"syntax\", \"value\": \"Packages/ShellScript/Shell-Unix-Generic.sublime-syntax\"}"
}
Другие вопросы по тегам