Notepad++需手动绑定扩展名与Shell语言才能实现.sh等文件的语法高亮:进入【设置→样式配置器】,在Shell语言下用户自定义扩展名中填入sh bash zsh ksh(不加点号),保存并重启生效。
Shell脚本打开后没高亮?先确认语言绑定是否生效
Notepad++ 不会自动把
或
文件识别为 Shell 脚本,除非你明确告诉它——这和文件扩展名是否标准、有没有 shebang(
)都无关。它只认“扩展名 → 语言”的映射关系。
打开一个
文件,顶部菜单栏的
项如果显示的是
或
,说明绑定失败
手动点
可临时高亮,但关掉再打开就失效
真正生效的方式是进【设置 → 样式配置器】,不是【首选项 → 高亮】——后者只管“智能高亮开关”,不管“哪个扩展名用哪种语言”
给 .sh / .bash 扩展名绑定 Shell 语言
这是最常被跳过的一步:很多人开了“启用智能高亮”,却忘了语言根本没绑上,结果白调。
点击菜单
左侧语言列表中选
(注意不是
,Notepad++ 内置只有
类型)
右侧找到
输入框,填入:
(空格分隔,不加点号!写成
会失效)
,建议重启 Notepad++,避免缓存导致新扩展名不生效
为什么选了 Shell 还是高亮错乱?检查注释与引号匹配
Shell 语法高亮依赖关键词识别和基础结构解析,对嵌套引号、未闭合注释、混用 $() 和 `` 等场景容易误判。这不是 bug,是当前 Shell 词法分析器的能力边界。
如果
后面紧跟括号或反引号(如
),部分版本会把整行当注释,忽略后续命令高亮
单引号内含单引号(
)或双引号内含未转义美元符(
正常,但
若
未定义,高亮可能中断)
避免在函数定义前加空行再写
——某些老版本 Shell 模式对换行敏感,推荐统一用
格式
想高亮 .conf 或 .env 文件也用 Shell 规则?直接复用扩展名绑定
很多运维配置文件(比如 Nginx conf、systemd unit、.env)实际是 Shell 兼容语法,没必要另起炉灶写自定义语言。
回到
在
里追加:
注意:这些扩展名必须全小写;大小写敏感的系统(如 Linux)上没问题,但 Windows 下也建议统一小写以防意外
改完别忘了点
,否则只是临时预览效果
Notepad++ 的 Shell 高亮本质是基于关键字 + 基础结构的轻量解析,它不执行语法校验,也不理解变量作用域。所以别指望它标出
是否为空——那是 shellcheck 的事。真正要命的坑,永远在「以为绑了扩展名就万事大吉」,结果发现
里填的是
而不是
。
.sh.bash#!/bin/bashdeploy.sh语言Normal textPlain text语言 → Shell设置 → 样式配置器ShellBashShell用户自定义的扩展名sh bash zsh ksh.sh保存并关闭## $(ls)'It'\''s'"$HOME/path""$VAR/subdir"VARfunction name {name() {设置 → 样式配置器 → Shell用户自定义的扩展名conf env systemd nginx保存并关闭unset VAR; echo $VAR样式配置器.shsh