一、Idea识别Freemarker语法
IntelliJ IDEA 识别 FreeMarker 语法不需要额外安装插件------官方的 FreeMarker 插件 已经默认捆绑并启用在 IntelliJ IDEA Ultimate 中。
如果你用的是 IntelliJ IDEA Community 版 ,则不支持 FreeMarker 语法高亮和代码提示。
1️⃣ 确认插件状态
-
打开
File → Settings(Windows/Linux) 或IntelliJ IDEA → Preferences(Mac) -
左侧选择
Plugins -
在搜索框输入 "FreeMarker"
-
确认
FreeMarker插件已勾选并启用
如果未启用,勾选后重启 IDE 即可。
2️⃣ 让 IDEA 识别 FTL 文件
IDEA 默认识别 .ftl、.ftlh、.ftlx 后缀的文件。如果你的文件使用其他后缀(如 .ft),可以手动添加:
-
Settings → Editor → File Types -
在
Recognized File Types中找到FreeMarker Template -
在
File name patterns下方点击➕,添加你的后缀(如*.ft) -
点击
OK保存
3️⃣ 解决变量未解析问题(@ftlvariable 注释)
当 IDEA 无法识别模板中使用的变量时(比如变量来自 Java 后端),可以使用特殊注释来"告诉" IDE 变量的类型:
ftl
<#-- @ftlvariable name="userName" type="java.lang.String" -->
<#-- @ftlvariable name="userList" type="java.util.List<com.example.User>" -->
这样 IDEA 就能为该变量提供代码补全和类型检查。
4️⃣ 跨文件共享变量定义(@implicitly included)
创建一个 freemarker_implicit.ftl 文件,以 @implicitly included 注释开头,并在其中定义所有全局变量。该文件中定义的变量会对同一模块中的所有 FTL 文件生效。
ftl
<#-- @implicitly included -->
<#-- @ftlvariable name="currentUser" type="com.example.User" -->
<#-- @ftlvariable name="isLoggedIn" type="java.lang.Boolean" -->
5️⃣ 配置模板数据语言(混合语言场景)
如果 FTL 模板中嵌入了其他语言(如 HTML、SQL、JavaScript),可以:
-
Settings → Languages & Frameworks → Template Data Languages -
为项目、目录或具体文件指定模板数据语言(如 HTML)
这样 IDEA 会对模板中的静态部分(HTML 标签等)提供正确的代码补全。
📌 总结
| 需求 | 解决方案 |
|---|---|
| 语法高亮、代码补全 | 确认 FreeMarker 插件已启用(仅限 Ultimate 版) |
| 识别自定义后缀的 FTL 文件 | File Types 中添加后缀模式 |
| 变量未解析 | 使用 @ftlvariable 注释声明变量类型 |
| 全局变量共享 | 创建 freemarker_implicit.ftl 文件 |
| 模板中嵌入其他语言 | 配置 Template Data Languages |
如果你用的是 Community 版 ,可以考虑升级到 Ultimate 版(30 天免费试用),或者使用 VS Code + FreeMarker 插件作为替代方案。
二、Idea设置Freemarker语法设置相关颜色
要为 FreeMarker 语法单独设置不同于 HTML 的颜色,可以按下面的步骤操作。
🎨 具体操作步骤
-
打开设置:
File → Settings(Windows/Linux) 或IntelliJ IDEA → Preferences(Mac) -
进入颜色方案设置:
Editor → Color Scheme → FreeMarker注意 :如果在列表中找不到
FreeMarker,说明可能没有打开.ftl文件。可以先打开任意一个.ftl文件,再进入设置界面,选项就会出现。 -
展开
FreeMarker节点,会看到可以单独设置颜色的语法元素:可设置的语法元素 说明 Directive #if、#list、#assign等指令Interpolation ${...}插值表达式Comment <#-- ... -->注释Built-in ?size、?upper_case等内建函数Number / String / Boolean 不同类型的字面量 -
选中要修改的语法元素(比如
Directive),然后:-
勾选 Foreground 复选框
-
点击右侧的颜色块,选择你想要的颜色
-
-
点击
OK或Apply保存设置
💡 配色建议
为了让 FreeMarker 语法在 HTML 中更显眼,可以参考下面的配色:
| 语法元素 | 建议颜色 | 效果预览 |
|---|---|---|
| Directive (指令) | 紫色 / 深蓝色 | <#if>、<#list> 呈紫色 |
| Interpolation (插值) | 橙色 | ${userName} 呈橙色 |
| Comment (注释) | 灰色斜体 | <#-- 注释 --> 呈灰色斜体 |
| Built-in (内建函数) | 绿色 | ?size 呈绿色 |
具体的颜色值可以在颜色选择器中通过取色器或输入十六进制色值来设置。
✅ 效果预览
设置完成后,你的 .ftl 文件中:
-
HTML 标签保持原有的颜色(可在
HTML配色方案中修改) -
FreeMarker 指令、插值等会以你设置的新颜色显示
这样就能在视觉上清晰区分模板代码和静态 HTML 代码了。