需同时修改langs.xml(添加自定义关键词到对应keywords组)和stylers.xml(为该组配置颜色/字体样式),并确保语言识别正确、文件编码为utf-8无bom,修改后必须重启notepad++。

怎么让 Notepad++ 识别你自己的函数名作为关键词
Notepad++ 默认不支持直接“添加关键词”,它靠语言定义文件(langs.xml)和词法分析器(stylers.xml)配合着高亮——改的是配置文件,不是点点菜单就能加的。
常见错误现象:user_func() 写完没变色、手动在“样式配置器”里选中“关键字”类别却找不到你的词、重启后失效。
- 必须同时修改
langs.xml(声明哪些词属于哪类关键字)和stylers.xml(指定这类词用什么颜色/字体) - 只改
stylers.xml不生效:Notepad++ 不知道你新加的词该归到哪个“关键字组” - 路径在 Notepad++ 安装目录下的
plugins\Config\(便携版)或%APPDATA%\Notepad++\(安装版),优先改后者 - 改完必须重启 Notepad++,热重载不支持 XML 语言配置更新
修改 langs.xml 添加自定义关键字组
Notepad++ 的关键词分组是硬编码的,比如 C/C++ 用 keywords1 表示关键字(if、for),keywords2 表示类型(int、struct)。你要加新词,得塞进现有组,或新增一个组并确保对应语言引用它。
使用场景:给 Python 加自己写的装饰器 @log_time,或给 Lua 加项目专用 API send_event。
- 打开
langs.xml,找到目标语言节点,如<language name="python" ...></language> - 在该节点内添加或修改
keywords属性,例如:keywords1="and assert break class continue def del elif else except False for from global if import in is lambda None not or pass print raise return True try while with yield log_time send_event" - 别用中文、空格、特殊符号;单词间只用空格分隔;大小写敏感(
LogTime≠logtime) - 如果要加很多词,建议新建一个
keywords4组,但必须同步在stylers.xml里配好样式,否则不显示
stylers.xml 里怎么配对应样式的颜色和字体
光有词没样式,还是白的。Notepad++ 把每组关键词映射到一个“样式编号”,比如 keywords1 对应 styleID="5",这个 ID 必须和 stylers.xml 中的定义一致。
性能影响:加太多关键字不会卡,但若误把整段代码当关键词(比如含括号、引号的字符串),会导致解析错乱、高亮跳变。
- 打开
stylers.xml,找对应语言的<lexertype name="python" ...></lexertype> - 在里面找
<wordsstyle name="KEYWORDS1" ...></wordsstyle>这类节点,修改它的fgColor(前景色)、fontStyle(粗体/斜体)等属性 - 如果新增了
keywords4,就得加一行:<wordsstyle name="KEYWORDS4" fgcolor="FF0080" fontstyle="1" bgcolor="FFFFFF"></wordsstyle>(fontStyle="1"是粗体) - 注意:不同语言的样式 ID 编号不通用,Python 的
styleID="5"和 Lua 的styleID="5"可能指不同东西,别抄错位置
为什么改完没反应?几个最常被忽略的点
不是配置错了,就是 Notepad++ 没读到你改的文件——尤其 Windows 下权限和路径容易出岔子。
- 确认你改的是 Notepad++ 实际加载的配置:菜单栏 → 设置 → 导入 → 导入 stylers/langs,可强制重载(但只对当前会话有效)
- 检查文件编码:必须是 UTF-8 无 BOM,用 Notepad++ 自己另存为时勾掉“BOM”选项,否则 XML 解析失败,静默忽略整个文件
- 语言关联是否正确:右下角状态栏看当前语言是不是你改的那个(比如写 Python 却被识别成 “Normal text”,关键词自然不触发)
- 缓存问题:某些版本会缓存
langs.xml,改完删掉%APPDATA%\Notepad++\langs.model.xml(如果存在),重启即重建
真正麻烦的不是加词本身,而是每次升级 Notepad++ 后,这些手动改的 XML 文件不会自动合并——得自己备份、对比、再贴回去。









