免费开源MIT 许可证IntelliJ IDEA 2025.1–2026.2

给 SQL 和 HTTP 文件一份目录

把注释里的 Markdown 标题——SQL 的 -- # 标题、HTTP 的 // # 标题——变成 IntelliJ IDEA 右侧可折叠的 Comment Outline,点击标题就跳到对应注释行。项目文件和 Scratches 里越写越长的迭代脚本都适用。

版本 1.2.4 · MIT 许可证 · 本地运行,不含网络代码 · IntelliJ IDEA 2025.1–2026.2

上方是 IntelliJ IDEA 窗口的示意图:左侧编辑器里是 scratch 文件 orders.sql,注释里的标题(-- # 订单分析、-- ## 按日汇总、-- ## 按用户汇总、-- ### 复购用户、-- # 用户画像、-- ## 活跃用户)在右侧 Comment Outline 工具窗口中变成带行号的树;第 2 行的普通说明不进入大纲。树里选中的是「按日汇总」,编辑器中对应的注释行同时高亮。

一行命令,让你的 AI 写出自带大纲的文件

把这份 Skill 装进你常用的 AI 工具,它生成的 SQL 和 HTTP 文件会用简短的注释标题组织,打开就能在 Comment Outline 里点击跳转。

Claude Code

mkdir -p ~/.claude/skills/comment-navigator && curl -fsSL https://commentnavigation.plugins.topxup.com/skills/zh/comment-navigator/SKILL.md -o ~/.claude/skills/comment-navigator/SKILL.md

在终端执行,SKILL.md 会保存到 Claude Code 的个人 Skill 目录。

Codex

mkdir -p ~/.codex/skills/comment-navigator && curl -fsSL https://commentnavigation.plugins.topxup.com/skills/zh/comment-navigator/SKILL.md -o ~/.codex/skills/comment-navigator/SKILL.md

在终端执行,SKILL.md 会保存到 Codex 的 Skill 目录。

Cursor

mkdir -p .cursor/rules && curl -fsSL https://commentnavigation.plugins.topxup.com/skills/zh/comment-navigator/SKILL.md -o .cursor/rules/comment-navigator.mdc

在项目根目录执行,保存为 Cursor 的项目规则文件。

通用粘贴

下载 SKILL.md

粘贴到对话开头,再描述你的需求。

AI 默认写法 → 用 Skill 之后

AI 默认写法装饰横线、手写编号、逐句复述代码
-- ============================
-- 1. 查询订单
-- ============================
-- 这个查询用于查询订单表中的数据,
-- 按天统计订单数量和订单金额,
-- 只统计已经支付的订单。
SELECT DATE(created_at) AS day, COUNT(*), SUM(amount)
FROM orders
WHERE status = 'PAID'
GROUP BY DATE(created_at);
用 Skill 之后两行标题,就是 Comment Outline 里的两级节点
-- # 订单分析
-- ## 按日汇总已支付订单
SELECT DATE(created_at) AS day,
       COUNT(*)    AS order_count,
       SUM(amount) AS total_amount
FROM orders
WHERE status = 'PAID'
GROUP BY DATE(created_at);
查看完整 Skill

命令、复制与下载取的是同一份文件,无需注册。

怎么用

  1. 在注释里写标题

    在普通注释行里用 # 到 ###### 标记层级:SQL 写 -- # 标题,HTTP 写 // # 标题。井号后必须留一个空格,文件的其他部分什么都不用改。

  2. 打开 Comment Outline

    点右侧的 Comment Outline 标签,或走 View → Tool Windows → Comment Outline。编辑器右键菜单和 Edit 菜单里的 Comment Structure 也能打开(默认键位 Shift+Cmd+F12)。

  3. 点击跳转,输入搜索

    点击标题,或用上下键选中后按 Enter,跳到对应注释行。直接在树里输入就能搜索标题。

Scratches 里的迭代脚本会一路变长:几百行 SQL,没有结构,也很难回到刚才在看的那一段。注释大纲不改变你的书写习惯,只是把这份文件变成一份目录。

功能

大纲能做的事,以及它不做的事。

  • 跟随编辑器,约 250 ms 更新

    面板跟随当前选中的编辑器,修改后约 250 ms 自动重建大纲,不需要先保存。空文件和不支持的文件会清空目录。

  • 大纲搜索

    点击顶部灰色的文件名切换成搜索框,输入关键词即时过滤,不区分大小写,并保留匹配标题的父级路径;上下键选择、Enter 跳转、Esc 清空。

  • Scratches 目录树与文件搜索

    点击面板底部的 Scratches 标题栏,展开 Scratches 里 .sql 和 .http 文件的目录树和文件名搜索框。上下两个区域独立滚动,可拖动分隔线调整高度。

  • 新建、拖拽、重命名 Scratch 文件

    点 + 在面板内新建 orders.sql、api.http 或文件夹,新文件自带注释标题模板。把文件拖到文件夹即实际移动,同名冲突会提示、不覆盖。右键使用 IDEA 的重命名、剪切、复制、粘贴和删除。

  • 折叠状态记忆

    可逐个节点展开或折叠,也能全部展开、全部折叠。同一文件编辑时保留折叠状态,切换文件后默认展开。

  • 跟随 IDE,只在本地

    界面语言跟随 IDEA 的显示语言(中文或英文,其他语言用英文),颜色和图标跟随明亮 / 暗黑主题。目录在 IDE 本地生成,不上传文档内容,无遥测、无广告。

  • 解析使用平台 Document API,不依赖 SQL / Database 或 HTTP Client 语言插件。
  • 原有的 Java / Kotlin 注释弹窗保留,仍通过同一个 Comment Structure 动作(Shift+Cmd+F12)打开。

标题写法

标题就是普通注释。数据库控制台和 HTTP Client 看到的仍然是注释,文件照样能直接执行。

SQL

-- # 角色与权限核对
-- ## 角色本体
-- ### 系统模板
SELECT 'system role';

-- ### 商户角色
SELECT 'merchant role';

-- ## 授权明细
/*
 * ### 页面权限
 * #### PRO 页面
 */
SELECT 'page permission';
Comment Outline
  • 角色与权限核对
  • 角色本体
  • 系统模板
  • 商户角色
  • 授权明细
  • 页面权限
  • PRO 页面
  • 支持 -- 行注释、MySQL # 行注释和 /* … */ 块注释。
  • 标题必须独占一整行注释。
  • 不会把 SQL 语句行尾注释、字符串或引用标识符里的内容误认成标题。

HTTP

@host = https://example.invalid

###
// # 订单接口
// ## 创建订单
// ### 正常场景
POST {{host}}/orders
Content-Type: application/json

{ "skuId": 1001, "quantity": 2 }

###
// ## 查询订单
// ### 按订单编号查询
GET {{host}}/orders/example-order-id
Comment Outline
  • 订单接口
  • 创建订单
  • 正常场景
  • 查询订单
  • 按订单编号查询
  • 推荐用 // # 标题;# # 标题(# 注释后再加 Markdown 标记)同样支持。
  • ### 请求名称 固定是二级节点,因此不要用它表达三级标题;需要明确层级时写 // ### 标题。
  • 空的 ### 不进入目录;请求前置和响应处理脚本里的注释也不进入目录。
HTTP 标题层级对照
写法 大纲层级
// # 标题 或 # # 标题 一级
// ## 标题 或 # ## 标题 二级
// ### 标题 或 # ### 标题 三级
### 请求名称 二级 —— HTTP Client 原有的请求分隔符

规则

  • 标题标记后必须留一个空格,支持 1–6 级。
  • 跳级时挂在前一个层级更浅的标题下;同级标题保持文件顺序。
  • 有显式标题时只展示标题,普通说明和纯装饰分隔线都不进入大纲。
  • 没有显式标题时,优先提取 0. 参数区、1. 接口说明 这类编号章节;没有编号章节才回退到普通注释的平级列表。
  • MySQL 方言里层级标题写成 # # 角色核对、# ## 权限明细:第一个 # 是 SQL 注释符,后面的 # 才表示标题级别。
  • HTTP 请求体之后,先写新的 ### 分隔符,再写下一组标题,否则它们会被当成请求体。

安装

两分钟、一条命令,IDE 提示时重启一次即可。

JetBrains Marketplace

已上线

打开 Marketplace 条目安装到 IntelliJ IDEA 2025.1–2026.2,或在 Settings → Plugins → Marketplace 里搜索 Code Comment Navigator。

从 JetBrains Marketplace 安装

从源码安装

  1. 构建

    克隆仓库,用 JDK 21 执行 ./gradlew test buildPlugin。安装包输出在 build/distributions/comment-navigation-1.2.4.zip。

  2. Install Plugin from Disk

    在 IDE 里打开 Settings → Plugins → 齿轮菜单 → Install Plugin from Disk…,选择该 ZIP,按 IDE 提示完成安装。

  3. 打开 SQL 或 HTTP 文件

    打开 .sql、.http 或 .rest 文件,点右侧的 Comment Outline 标签,或走 View → Tool Windows → Comment Outline。

兼容 IntelliJ IDEA 2025.1–2026.2(251–262.*),基于 2025.1 SDK 构建并输出 Java 21 字节码。从源码构建需要 JDK 21。

想先看看效果?仓库里带了两个示例文件: SQL 示例 · HTTP 示例

常见问题

Code Comment Navigator 是免费的吗?

是。项目采用 MIT 许可证,个人和企业均可免费使用,包括商业用途,无需购买、订阅或激活码。允许修改、再分发及销售,须保留版权声明与许可声明。软件按现状提供,不承诺固定更新周期或支持响应时间。

支持哪些版本的 IntelliJ IDEA?

兼容 IntelliJ IDEA 2025.1–2026.2(251–262.*),基于 2025.1 SDK 构建并输出 Java 21 字节码。从源码构建插件需要 JDK 21。

需要额外装 Database 或 HTTP Client 插件吗?

不需要。解析使用平台 Document API,不依赖 SQL / Database 或 HTTP Client 语言插件,.sql、.http、.rest 文件都能自己读。

它会把我的代码传到外部吗?

不会。插件不含任何网络代码,只读取你当前打开的编辑器文本,并在 IDE 本地生成大纲。

为什么 ### 请求名称 是二级节点?

因为它是 HTTP Client 原有的请求分隔符,为了让既有 .http 文件保持可用,它固定映射为二级节点;空的 ### 会被跳过。需要明确的三级标题时,改写成 // ### 标题。

在 Scratches 里能用吗?

能。项目文件和 Scratches 都支持——Scratches 里越写越长的迭代脚本正是这个大纲存在的理由。打开 scratch 的 SQL 或 HTTP 文件,面板照常跟随编辑器。

许可与联系

Code Comment Navigator 采用 MIT 许可证,版权归 Fuuqiu (Tinyue) 所有(2024–2026)。个人和企业均可免费使用,包括商业用途,无需购买、订阅或激活码。

允许修改、再分发以及销售,须保留版权声明与许可声明。软件按现状提供,不提供担保,也不承诺固定的更新周期或支持响应时间。