Sublime Text 默认不将 .sh 文件识别为 Bash 脚本,右下角临时切换“Bash”仅作用于当前文件;永久绑定需通过 View → Syntax → Open all with current extension as… → Bash,确保使用 Packages/ShellScript/Bash.sublime-syntax 路径。

Sublime Text 不会自动把文件后缀和语法关联上,装了插件、重启了编辑器、甚至右下角点了“Bash”临时切换,都不等于永久绑定——真正生效的只有写进 Packages/User/ 的映射规则或 .sublime-syntax 文件里声明的 file_extensions。
为什么右下角点一次“Bash”没用?
那只是当前文件的临时语法切换,不改任何配置。下次新开一个 .sh 文件,还是 Plain Text 或错配成 ShellScript(不是 Bash)。Sublime 默认根本不认 .sh 是 Bash,ShellScript.sublime-syntax 和 Bash.sublime-syntax 是两个独立文件,后者才支持 [[ ]]、source、declare 等 Bash 特有语法。
- 必须通过 View → Syntax → Open all with current extension as… → Bash 才会写入持久映射
- 这个操作实际在
Packages/User/Preferences.sublime-settings里加了一条隐式规则(不直接可见,但生效) - 如果没看到 Bash 选项,说明你没装或没启用
Bash语法包——它不在默认安装列表里,得手动装Package Control: Install Package → Bash
如何确认 .m 文件真绑定了 MATLAB?
.m 后缀被 Objective-C 抢占是高频问题。即使你装了 MatlabSyntax 插件,只要右下角显示的是 Objective-C,高亮就完全不工作——因为 Sublime 内置的 Objective-C.sublime-syntax 明确写了 file_extensions: [m],而 MatlabSyntax 没写,也没权限覆盖。
- 打开任意
.m文件,看右下角状态栏:不是MatlabSyntax就代表没绑定 - 点击右下角 → Open all with current extension as… → MatlabSyntax(注意名称要完全匹配,大小写敏感)
- 如果菜单里没有
MatlabSyntax,说明插件没装成功,或装成了matlab-mode(名字不同,需选对应项) - 绑定后,新打开的
.m文件会立刻显示 MATLAB 关键字(如function、end)高亮
自定义语法文件里 file_extensions 怎么写才有效?
写错格式,.sublime-syntax 文件就白做了。Sublime 只认 YAML 列表格式,且只扫描 Packages/User/ 下以 .sublime-syntax 结尾的文件。
-
file_extensions必须是 YAML 列表:- cfg、- env,不能写成"cfg"、["cfg"]或cfg(单字符串) - 文件名必须严格为
xxx.sublime-syntax,xxx.syntax或xxx.sublime-syntax.bak都无效 - 路径必须在
Packages/User/下,比如Packages/User/mylog/mylog.sublime-syntax可以,Packages/User/mylog/defs/mylog.sublime-syntax就不行 - 保存后,该语法会出现在 View → Syntax → User → YourName,但此时还没自动绑定后缀;仍需右键状态栏选 Open all with current extension as… 才生效
nginx.conf 高亮失效,别急着重装插件
右下角显示 Plain Text,大概率不是插件没装,而是路径没对上。Nginx 插件(如 nginx-sublime-syntax)通常不声明 .conf 全局扩展名,怕误染 Redis、Apache 等其他 conf 文件。
- 先按
Ctrl+Shift+P→ Package Control: List Packages,确认nginx-sublime-syntax在列表里 - 再进 Preferences → Browse Packages…,检查
nginx-sublime-syntax/文件夹下有没有nginx-sublime-syntax.sublime-syntax - 如果存在,打开一个真实
nginx.conf,右下角点开 → Open all with current extension as… → nginx-sublime-syntax - 更稳妥的做法是用
file_name_patterns做路径级绑定:进 Preferences → Settings – Syntax Specific,右侧加:
{
"syntax": "Packages/nginx-sublime-syntax/nginx-sublime-syntax.sublime-syntax",
"file_name_patterns": ["/etc/nginx/.*", "nginx\.conf", "sites-.*\.conf"]
}
注意点号要转义成 \.,否则 .conf 会被正则当成“任意字符 + conf”。
最常被忽略的一点:语法文件只负责打标签(比如把 server 标成 keyword.control.nginx),颜色是否显示,取决于当前 color_scheme 里有没有定义这个作用域——所以如果你自定义了配色方案,得手动加一行 keyword.control.nginx 的颜色规则,否则再准的语法也白搭。


















