OMNI Todo

一款 VSCode 插件,用于扫描、高亮和管理代码中的 TODO 注释标签,支持优先级标记、自定义标签和模板插入。
功能特性
核心功能(兼容 Todo Tree)
- 快速工作区扫描 — 基于 ripgrep 引擎
- 树视图 — 两种模式:树形(工作区 > 文件 > TODO)、扁平列表
- 视图切换 — 单按钮在树形/扁平视图间切换,图标随状态自动变化
- 分组方式 — 按文件分组 或 按标签分组
- 全部展开/折叠 — 单按钮切换全部展开与全部折叠,图标随状态自动变化
- 编辑器高亮 — 每个标签可独立配置颜色
- Gutter 图标 和 滚动条标记
- 导航跳转 — 在当前文件内跳转到上一个/下一个 TODO(Alt+Shift+T / Alt+Shift+P)
- 文本过滤 — 按关键词过滤树内容
- 导出 — 导出为 Markdown 或纯文本
- 状态栏计数 — 实时显示各标签数量
- 自定义标签 — 动态添加/删除搜索标签,支持按标签分组查看
- 扫描范围 — 仅工作区 / 仅打开文件 / 工作区+打开文件
树视图结构
树形模式下,以工作区名称为根节点,文件直接作为子节点(括号内显示相对路径),TODO 作为文件的子节点:
- omni-todo (工作区)
-- extension.ts (src)
--- [P0] 修复命令注册逻辑
--- [P2] 添加错误处理
-- treeProvider.ts (src/tree)
--- [P1] 优化排序算法
-- config.ts (src/utils)
--- TODO 添加默认值验证
增强功能
优先级标记
在 TODO 中标记优先级,不同优先级会显示不同颜色:
// TODO(P0): 中断处理函数有严重 bug → 红色
// TODO(P1): 重构 DMA 配置代码 → 橙色
// TODO(P2): 为 UART 驱动添加单元测试 → 黄色
// TODO(P3): 优化注释格式 → 蓝色
优先级如何影响颜色:
- 树视图中的图标颜色会变为优先级对应的颜色
- 编辑器中的高亮背景色会变为优先级对应的颜色
- 滚动条上的标记颜色也会同步变化
- 无优先级的 TODO 使用标签本身的默认颜色
默认优先级配置:
| 优先级 |
标签 |
颜色 |
用途 |
| P0 |
Critical |
#f44747 红色 |
必须立即修复的严重问题 |
| P1 |
High |
#ff8c00 橙色 |
高优先级,尽快处理 |
| P2 |
Medium |
#FFD700 黄色 |
中等优先级,计划处理 |
| P3 |
Low |
#0a84ff 蓝色 |
低优先级,有空再处理 |
在 设置 → OMNI Todo → Priority 中可自定义优先级级别、标签和颜色。
其他优先级特性:
- 树视图标签前显示
[P0] 前缀
- 支持按优先级排序树视图
- Tooltip 中显示优先级信息
- 模板插入时可选择优先级
自定义标签与标签分组
- 添加标签 — 通过命令面板执行 "Add Tag",输入新的标签名称(如 REVIEW、OPTIMIZE)
- 删除标签 — 通过命令面板执行 "Remove Tag",从列表中选择要删除的标签
- 按标签分组 — 点击工具栏的标签分组按钮,TODO 会按标签关键词分组显示
- 按文件分组 — 点击工具栏的文件分组按钮,恢复按文件分组显示
- 添加的标签会自动保存到用户设置中,下次打开时仍然生效
TODO 模板插入
按快捷键 Alt+Shift+I 快速插入格式化的 TODO 注释:
- 自动检测当前文件语言的注释格式(C/C++ 用
//,Python 用 # 等)
- 弹出优先级选择器,选择后自动填入
- 可选包含当前日期和 Git 作者名
- 模板格式可配置:
{tag}({priority}): {text}
C/C++ 适配
- 针对 C/C++ 优化注释语法检测(
// 和 /* */)
- 支持 CMake、Makefile、汇编注释格式
- 兼容
.c、.cpp、.h、.hpp、.cc、.s、.S 文件
工具栏按钮
| 按钮 |
说明 |
| 刷新 |
重新扫描工作区 |
| Toggle Tree/Flat View |
在树形视图和扁平列表间切换(图标随当前模式变化) |
| Expand All / Collapse All |
全部展开或全部折叠(图标随当前状态变化) |
| Group by Tag |
按标签关键词分组 |
| Group by File |
按文件分组(默认) |
| Filter |
按文本过滤树内容 |
| Clear Filter |
清除过滤 |
| Export |
导出为 Markdown 或纯文本 |
| Reveal Current File |
在树中定位当前文件 |
命令列表
| 命令 |
快捷键 |
说明 |
| Insert TODO |
Alt+Shift+I |
在光标处插入格式化 TODO |
| Go to Next TODO |
Alt+Shift+T |
跳转到当前文件的下一个 TODO |
| Go to Previous TODO |
Alt+Shift+P |
跳转到当前文件的上一个 TODO |
| Refresh Tree |
— |
重新扫描工作区 |
| Add Tag |
— |
添加新的搜索标签 |
| Remove Tag |
— |
移除已有的标签 |
| Export Tree |
— |
导出为 Markdown 或纯文本 |
| Filter Tree |
— |
按文本过滤树 |
| Reveal Current File |
— |
在树中定位当前文件 |
配置项
通用
omni-todo.general.tags — 要搜索的标签(默认:TODO, FIXME, NOTE, HACK, XXX)
omni-todo.general.excludeGlobs — 排除的文件 glob 模式
omni-todo.general.fileExtensions — 限制扫描的文件扩展名
omni-todo.general.scanMode — 扫描模式:workspace / openFiles / workspaceAndOpenFiles
omni-todo.general.periodicRefreshInterval — 自动刷新间隔(分钟,0=禁用)
高亮
omni-todo.highlights.defaultHighlight — 所有标签的默认高亮设置
omni-todo.highlights.customHighlight — 按标签自定义高亮
树视图
omni-todo.tree.showCounts — 显示节点计数
omni-todo.tree.compactFolders — 压缩文件夹名称
omni-todo.tree.sortBy — 排序方式:file / tag / priority / line
优先级
omni-todo.priority.enabled — 启用优先级解析
omni-todo.priority.levels — 优先级级别定义(P0-P3),含标签和颜色
模板
omni-todo.template.format — 模板格式字符串
omni-todo.template.includeDate — 模板中包含日期
omni-todo.template.includeAuthor — 模板中包含作者
omni-todo.template.includePriority — 插入时选择优先级
omni-todo.template.commentStyle — 注释风格:auto / line / block
开发
npm install # 安装依赖
npm run compile # 编译(开发模式)
npm run watch # 监听模式
npm run package # 生产构建(webpack 打包,不生成 .vsix)
npx @vscode/vsce package # 打包为 .vsix 安装包
在 VSCode 中按 F5 启动扩展开发宿主进行调试。
打包前请确保已执行 npm run package 完成生产构建,再运行 npx @vscode/vsce package 生成 .vsix 文件。如需发布到市场,使用 npx @vscode/vsce publish。
许可证
MIT
| |