在intellij idea中可添加log快捷模板:settings > editor > live templates > java > 新建模板,缩写log,模板文本为private static final logger logger = loggerfactory.getlogger($class_name$.class);,变量class_name设为classname()并勾选skip if defined,作用域选java: declaration。

IntelliJ IDEA 里怎么添加自己的 log 快速模板?
直接在编辑器里敲 log + Tab 就能补全带当前类名和 SLF4J 格式的日志声明,不用每次手写 private static final Logger logger = LoggerFactory.getLogger(XXX.class);。
关键不是“能不能”,而是模板变量得对上:用 $CLASS_NAME$ 获取当前类名,$END$ 定位光标,否则补全后光标乱跳或类名为空。
- 路径是
Settings > Editor > Live Templates > Java > + > Live Template -
Abbreviation填log,Description写“SLF4J logger field” -
Template text填:private static final Logger logger = LoggerFactory.getLogger($CLASS_NAME$.class);
- 点
Edit variables,把CLASS_NAME的表达式设为className(),勾选Skip if defined - 作用域选
Java: declaration,不然在方法里也能触发,会报错
为什么 sysout 模板在 Kotlin 文件里不生效?
因为默认模板只绑定在 Java 和 JavaScript 语言上下文里,Kotlin 是独立语言支持,得手动加。
不改的话,你在 Kotlin 里敲 sysout + Tab,IDE 就当没听见——不是插件问题,是作用域漏配了。
立即学习“Java免费学习笔记(深入)”;
- 打开模板设置,找到
sysout条目 - 点右下角
Define,勾选Kotlin - 如果还想在 Kotlin 的
fun体内也用(比如补全println("xxx")),记得把作用域从Java: statement改成Kotlin: statement - 注意:Kotlin 没有
System.out.println的惯用法,建议另建一个叫pln的模板,内容直接用println($END$)
fori 模板在数组和 List 上行为不一样?
是的。IDEA 自带的 fori 默认只识别 int[]、String[] 这类数组类型,遇到 List<string></string> 或 ArrayList 就不会自动补全索引循环——它压根不分析泛型结构,只看语法树上的 [] 符号。
想让它对集合也生效,得自己写变量表达式,或者干脆另建一个 forl 模板专用于 List。
- 复制一份
fori,改Abbreviation为forl -
Template text写:for (int $INDEX$ = 0; $INDEX$ < $COLLECTION$.size(); $INDEX$++) {<br> $ELEMENT_TYPE$ $ELEMENT$ = $COLLECTION$.get($INDEX$);<br $END$<br>} -
Edit variables中,给COLLECTION设表达式expressionOfType("java.util.Collection"),ELEMENT_TYPE设为expectedType() - 作用域选
Java: statement即可,但注意:这个模板对Map不友好,别硬套
模板里用 $SELECTION$ 总是粘贴失败?
常见现象是:你选中一段代码,按 Ctrl+Alt+T(或 Cmd+Alt+T)调出 Surround With,选自定义模板,结果原内容不见了,或者只贴进去一半。
根本原因是模板没声明接收选中内容——$SELECTION$ 不是自动生效的占位符,必须在模板里显式写出,并且作用域得支持 Surround。
- 新建模板时,
Template text至少要包含一次$SELECTION$,比如:if ($CONDITION$) {<br> $SELECTION$<br>} - 在
Applicable in里必须勾选Java: statement或对应上下文,同时勾选Surround复选框 - 别在
Expression变量里对$SELECTION$做二次处理(比如套trim()),IDEA 不支持嵌套表达式解析 - 如果选中的是多行且含缩进,补全后格式可能错乱,建议模板里用
$SELECTION$开头不加空格,靠 IDE 自动对齐
最麻烦的其实是变量表达式拼错,比如把 className() 写成 class_name(),或者漏掉 expectedType() 的括号——IDEA 不报错,只是变量留空,等你补完才发现类名没出来。这类细节没法靠试错发现,得翻官方文档查函数签名。









