以下代码(您应该使用cmd.exe运行它)打开Sublime Text并将语言更改为JSON:
sublime_text.exe -n -w --command "set_file_type {\"syntax\": \"Packages/JavaScript/JSON.sublime-syntax\"}"
但是,我需要稍微改变其行为。它应该更改打开文件的语言。该文件为README
,没有扩展名。
sublime_text.exe C:\test\README -n -w --command "set_file_type {\"syntax\": \"Packages/JavaScript/JSON.sublime-syntax\"}"
由于某种原因,它不起作用。该语言仍然是“纯文本”。我做错了吗?
[当我尝试此操作时,我发现它设置了在执行命令之前处于活动状态的选项卡的语法。
这告诉我们,命令行上提供的命令是在文件加载之前执行的,这可能是因为ST是异步执行的。
对我来说,可以通过使用单独的调用来使其工作:
subl C:\test\README && subl --command "set_file_type { \"syntax\": \"Packages/JavaScript/JSON.sublime-syntax\" }"
请注意,我没有使用-w
,因为这会等到文件关闭后再执行命令。
此外,您也可以使用new_file
命令直接设置新文件的语法:
subl --command "new_file { \"syntax\": \"Packages/JavaScript/JSON.sublime-syntax\" }"
显然,如果需要在新窗口中,则可以保留-n
参数。而且,如果您希望Sublime Text在关闭文件之前不将控制权交还给Shell,那么您也可以保留-w
,但据我所知,这仅在打开文件时有效,而在创建文件时无效新的一个。并且,如果您使用-w
,则将无法从命令行更改语法。当使用路径ApplySyntax
等打开文件时,使用C:\test\README
这样的插件或自己编写一个小型Python脚本来设置文件类型可能会更好。