FileAnnotation
为 VSCode 文件和文件夹添加备注,帮助你在大型项目中快速标识文件用途。

目录
功能特性
| 功能 |
说明 |
| 📝 文件 & 文件夹备注 |
为任意文件和文件夹添加文字备注 |
| 🏷️ 资源管理器 badge |
有备注的项显示彩色 badge(前2字)+ 完整 tooltip |
| 🌲 侧边栏备注树 |
按目录层级树状展示所有备注,复刻资源管理器风格 |
| 🔄 两种显示模式 |
「只显示备注」和「显示全部文件」一键切换 |
| 🔍 智能搜索 |
实时搜索备注内容和文件名,自动展开匹配节点 |
| 🚁 Smart 菜单导入 |
粘贴菜单 JSON 数组,批量导入备注到存储文件最前面 |
| 🔁 自动同步 |
文件重命名/删除时备注自动迁移或清理 |
| 👥 团队共享 |
备注数据保存在 .vscode/file-annotation.json,方便版本管理 |
安装
方式一:VSIX 安装
- 下载最新的
.vsix 文件
Ctrl+Shift+P → Extensions: Install from VSIX...
- 选择
.vsix 文件,重新加载窗口
快速开始
添加备注
- 在文件资源管理器中右键点击文件或文件夹
- 选择「✏️添加备注」
- 输入备注内容,回车确认
添加后,文件名旁会显示彩色 badge,鼠标悬停显示完整备注。
编辑 / 删除备注
- 右键 → 「✍️编辑备注」修改内容
- 右键 → 「🗑️ 删除备注」移除备注
- 编辑时清空输入框并回车也可删除
侧边栏备注树
点击活动栏中的备注图标打开「文件备注」侧边栏。
显示模式
点击标题栏 🔄 按钮切换:
| 模式 |
说明 |
| 只显示备注 |
只展示有备注的文件/文件夹,自动补全中间目录形成树状层级 |
| 显示全部文件(默认) |
展示所有文件,有备注的项在文件名后追加「【备注内容】」 |
搜索备注
点击标题栏 🔍 按钮:
- 实时搜索:输入关键词即时过滤(支持文件名和备注内容)
- 防抖优化:300ms 延迟,避免频繁刷新
- 自动展开:匹配节点及其所有父级目录自动展开
- 持久搜索框:失去焦点不关闭,方便随时微调
- ESC 关闭:按 ESC 关闭搜索框,结果保留在侧边栏
- 搜索状态下出现 ❌ 按钮,点击恢复原视图
侧边栏内联操作
- 有备注的节点:显示 ✏️ 编辑 和 🗑️ 删除 按钮
- 无备注的节点(全量模式):显示 ➕ 添加 按钮
- 点击文件节点直接打开文件,点击文件夹节点定位到资源管理器
自动过滤
以下目录/文件不会出现在侧边栏中:
node_modules、.git、dist、out、.vscode 及所有以 . 开头的隐藏文件
🚁 Smart 菜单导入
适用于使用 Smart 框架的前端项目,可将后端返回的菜单 JSON 批量导入为文件备注。
使用步骤
- 点击侧边栏标题栏的 🚁 按钮(或命令面板搜索
smart菜单导入)
- 在弹出的输入框中粘贴菜单 JSON 数组
- 确认后插件自动处理:
- 递归提取所有含有效
component 路径的菜单项
- 将
component 拼接为 src/views/<component> 的完整文件路径
- 以菜单项的
name 作为备注内容
- 新数据插入到存储文件最前面,已有备注不会被覆盖
输入格式示例
[
{
"name": "主控面板",
"component": "BLANK_LAYOUT",
"children": [
{
"name": "分析页",
"component": "dashboard/analysis/index"
},
{
"name": "工作台",
"component": "dashboard/workbench/index"
}
]
}
]
💡 component 为 BLANK_LAYOUT、LAYOUT 等特殊标识符的项自动跳过,只处理包含 /xxx 的有效路径。
文件路径解析规则
插件会按以下顺序尝试匹配文件扩展名:.vue → .tsx → .ts → .jsx → .js。若均不存在,默认使用 .vue 后缀。
配置选项
Ctrl+, 搜索 FileAnnotation:
| 配置项 |
类型 |
默认值 |
说明 |
fileNotes.noteColor |
string |
#ff0000 |
badge 颜色(支持 ThemeColor ID,如 editorWarning.foreground) |
fileNotes.showAllFiles |
boolean |
true |
true = 显示全部文件,false = 只显示有备注的文件 |
fileNotes.notePrefix |
string |
📌 |
侧边栏中标记有备注项的前缀符号 |
数据存储
备注数据保存在工作区根目录:
your-project/
├── .vscode/
│ └── file-annotation.json ← 备注数据
└── src/
└── ...
file-annotation.json 格式:
[
{
"filePath": "/absolute/path/to/src/views/dashboard/analysis/index.vue",
"note": "分析页",
"isDirectory": false
},
{
"filePath": "/absolute/path/to/src/utils",
"note": "工具函数目录",
"isDirectory": true
}
]
建议将 .vscode/file-annotation.json 纳入版本控制,方便团队共享备注信息。
命令列表
| 命令 ID |
触发方式 |
说明 |
file-notes.addNote |
右键菜单 / 命令面板 |
为文件或文件夹添加备注 |
file-notes.editNote |
右键菜单 / 命令面板 |
编辑已有备注 |
file-notes.removeNote |
右键菜单 / 命令面板 |
删除备注 |
file-notes.addNoteFromTree |
侧边栏内联按钮 |
从侧边栏添加备注 |
file-notes.editNoteFromTree |
侧边栏内联按钮 |
从侧边栏编辑备注 |
file-notes.removeNoteFromTree |
侧边栏内联按钮 |
从侧边栏删除备注 |
file-notes.toggleViewMode |
侧边栏标题按钮 |
切换显示模式 |
file-notes.expandAll |
侧边栏标题按钮 |
全部展开 |
file-notes.collapseAll |
侧边栏标题按钮 |
全部折叠 |
file-notes.searchNotes |
侧边栏标题按钮 |
搜索备注内容或文件名 |
file-notes.clearSearch |
侧边栏标题按钮 |
清除搜索关键词 |
file-notes.importFromRoutes |
侧边栏标题按钮 |
从 Smart 菜单 JSON 批量导入备注 |
项目结构
src/
├── extension.ts # 插件入口:activate / deactivate
├── types.ts # 共享类型定义
├── constants.ts # 共享常量(配置键、忽略规则等)
├── fileUtils.ts # 文件系统工具函数
├── FileNotesManager.ts # 备注数据管理(CRUD + 持久化)
├── NoteTreeItem.ts # 侧边栏树节点模型
├── FileNotesTreeProvider.ts # 侧边栏树数据提供者
├── FileDecorationProvider.ts # 文件资源管理器装饰器
├── routeParser.ts # 路由文件解析器
├── smartMenu.ts # Smart 菜单数据示例
└── commands.ts # 命令注册与处理
开发
# 安装依赖
npm install
# 编译
npm run compile
# 监听模式(自动重编译)
npm run watch
# 打包为 .vsix
npm run package
# 发布到市场
npm run publish
按 F5 启动 Extension Development Host 进行调试。