sublime text 中 shell 脚本不亮色需先确认语法为 shellscript:右下角应显示“shellscript”,若为“plain text”或“shell-unix-generic”则需手动设置;再通过 preferences → settings – syntax specific 添加 {"syntax": "packages/shellscript/shellscript.sublime-syntax"} 实现 .sh 文件自动高亮。

Sublime Text 里 Shell 脚本不亮色?先确认语法包是否启用
Sublime Text 默认支持 .sh 文件的 Bash 语法高亮,但前提是当前文件被正确识别为 ShellScript 语法。常见现象是打开 deploy.sh 后全是白色文字,或关键字(如 if、for)没颜色——大概率是右下角显示的是 Plain Text 或 Shell-Unix-Generic,而非 ShellScript。
手动切换方法:Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS)→ 输入 Set Syntax: ShellScript → 回车。注意别选错成 Shell-Unix-Generic,它高亮规则老旧,不支持现代 Bash 语法(比如 [[ ]]、$(( ))、数组展开)。
- 检查右下角状态栏,必须显示
ShellScript(不是Shell或Unix Shell) - 如果没这个选项,说明内置语法包被禁用或损坏,需重置 Package Control 或重新安装
- 临时文件(无后缀)或
.bash扩展名默认不会自动匹配ShellScript,得手动设
怎么让 .sh 文件一打开就自动高亮?配文件关联
每次手动切语法太累,直接让 Sublime 记住:所有 .sh 文件默认用 ShellScript 语法。这不是插件功能,而是 Sublime 的核心配置项。
操作路径:Preferences → Settings – Syntax Specific(注意不是通用 Settings),然后在右侧窗口加这行:
{
"syntax": "Packages/ShellScript/ShellScript.sublime-syntax"
}
保存后,新打开的 .sh 文件就会自动高亮。注意路径里的 Packages/ShellScript/ShellScript.sublime-syntax 是 Sublime 内置路径,别写成绝对路径或漏掉 .sublime-syntax 后缀。
- 如果用的是旧版 Sublime(ShellScript.tmLanguage,但建议升级,新版高亮更准
-
.bash、.zsh等扩展名不会自动绑定,需单独配:用 View → Syntax → Open all with current extension as… → 选ShellScript - 配完不生效?重启 Sublime,或删掉
Cache/目录强制刷新语法缓存
写 Bash 时关键词还是不亮?检查 shebang 和语法版本
即使语法设对了,[[ ]]、declare -A、$'string' 这些 Bash 4+ 特性仍可能灰着——因为 Sublime 的 ShellScript 语法默认按 POSIX sh 兼容模式解析,遇到非 POSIX 语法会退回到普通文本。
解决办法很简单:在文件第一行加上明确的 shebang,比如 #!/usr/bin/env bash 或 #!/bin/bash。Sublime 会据此启用 Bash 模式,激活高级语法高亮。
- shebang 必须是文件首行,且不能有空行或 BOM;
#!/usr/bin/env sh会走 POSIX 模式,bash才触发 Bash 扩展 - 如果脚本真要兼容 sh,但又想高亮 Bash 特性,只能手动切语法为
Bash(需额外装插件,不推荐) - 某些运维脚本用
#!/bin/bash -eux,参数不影响识别,只要含bash就行
高亮对了但括号/引号配对乱?别碰 color scheme
语法高亮和配色方案(color scheme)是两件事。有人发现 if 变蓝了,但 { 和 } 不配对高亮,或者单引号内变量('$HOME')没变色——这不是语法包问题,而是当前 color scheme 没定义对应 scope。
Sublime 的 ShellScript 语法会把不同元素打上不同 scope(比如 keyword.control.shell、string.quoted.single.shell),而 color scheme 决定这些 scope 显示什么颜色。默认的 Monokai、Adaptive 都覆盖较全,但有些精简主题会砍掉 shell 相关 scope。
- 快速验证:换回
Monokai主题(Preferences → Color Scheme → Monokai),看问题是否消失 - 不想换主题?用 Ctrl+Shift+P → Developer: Show Scope Name,把光标放括号上,看输出的 scope 名,再查当前 theme 是否包含该 scope
- 自己改 theme 太重,优先换主题或装
Neon Color Scheme这类对 shell 支持好的第三方方案
真正难搞的不是高亮本身,是 shebang 写错、语法包被覆盖、或者 color scheme 悄悄屏蔽了 shell scope——这三个地方卡住,再配十遍都没用。










