vscode默认不识别.njk文件为html导致语法高亮、emmet补全、自动闭合等功能失效;需在settings.json中配置"files.associations": {"*.njk": "html"}绑定为html模式,并安装esbenp的nunjucks插件以保留和{{ }}语义高亮。

VSCode 默认不支持 Nunjucks 模板的语法高亮、Emmet 补全、自动闭合或格式化——这不是插件没装对,而是它根本没把 .njk 文件当 HTML 处理。
为什么 Nunjucks 文件里 <div> 不高亮、Tab 不补全、双击选不中标签对
<p>VSCode 打开 <code>.njk 文件时,默认语言模式是 Plain Text 或 Nunjucks(如果装了插件但没配关联),此时所有 HTML 相关功能全部失效:Emmet 不触发、auto-close-tag 和 auto-rename-tag 完全不响应、括号匹配和缩进也按纯文本逻辑走。
根本原因:VSCode 的 HTML 功能(补全、高亮、格式化)只绑定在 html 语言模式上,而 Nunjucks 是模板语言,不是原生语言模式。
- 手动切换语言模式:打开任意
.njk文件 → 点右下角语言标签(如显示Plain Text)→ 选Configure File Association for '.njk'→ 输入html回车 - 或直接改
settings.json:"files.associations": { "*.njk": "html" } - 改完后,
<div> 立刻被识别,Emmet <code>div.tab、自动闭合











