You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IntelliJ中禁止指定Kotlin代码块被自动格式化?

解决方案

方案一:启用Formatter标记控制(最推荐,完全匹配需求)

你之前使用//@formatter:off///@formatter:on不生效,是因为IntelliJ默认没有开启注释格式化控制开关,按以下步骤配置即可:

  • 打开IntelliJ设置:Windows/Linux按Ctrl+Alt+S,macOS按Cmd+,,或点击菜单栏File > Settings
  • 依次进入Editor > Code Style路径
  • 在右侧的Formatter Control区域,勾选Enable formatter markers in comments
  • 确认默认的格式化关闭标记为@formatter:off、开启标记为@formatter:on,也可根据自身习惯自定义

配置完成后,在你需要保留排版的代码块前后加上对应注释即可:

//@formatter:off
fun generateAllCards(): Array<Card> {
    return arrayOf(
        Card(FORMAT_1, COLOUR_BLACK, TYPE_RUN, 1, POINTS_1, arrayOf(RunAbility(arrayOf(TRIGGER_RAN_BLUE), EFFECT_CAN_FLY_10_SEC))),
        Card(FORMAT_2, COLOUR_YELLOW, TYPE_DRIVE, 3, POINTS_3, arrayOf(DriveAbility(arrayOf(TRIGGER_DROVE_RED, TRIGGER_DROVE_BLUE), arrayOf(GET_ONE_VICTORY_TOKEN)))),
        ...
    )
}
//@formatter:on

该配置仅会保护两个标记之间的代码不被格式化,文件其余区域的格式化功能完全不受影响。

方案二:调整Kotlin格式化规则(不需要禁用格式化也能保留排版)

如果你只是不希望函数构造参数被自动拆分换行,可以单独调整Kotlin的格式化规则,无需局部禁用格式化:

  • 进入设置Editor > Code Style > Kotlin,切换到Wrapping and Braces标签页
  • 找到Function call arguments选项,将换行策略设置为Do not wrap
  • 同时勾选Keep when reformatting分类下的Line breaks选项,取消勾选Ensure right margin is not exceeded

调整后IntelliJ格式化时会保留你手动写的单行参数排版,不会自动拆分为多行。

内容的提问来源于stack exchange,提问作者gotube

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:36:08