Ctrl+Alt+T 插入 // TODO: 是最直接的方式;VSCode 默认未绑定该快捷键,但通过一行 JSON 配置即可启用,支持光标自动定位、避免拼写错误,适用于高频补漏场景。

Ctrl+Alt+T 插入 // TODO: 是最直接的方式
VSCode 默认不绑定该快捷键,但只需一行配置就能启用。它比手敲快、不拼错、光标自动停在冒号后,适合高频补漏场景。
操作步骤:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Preferences: Open Keyboard Shortcuts (JSON)并回车 - 在打开的
keybindings.json中粘贴以下内容(注意逗号分隔):
[
{
"key": "ctrl+alt+t",
"command": "editor.action.insertSnippet",
"args": {
"snippet": "// TODO: $1"
}
}
]保存后,任意编辑器中按 Ctrl+Alt+T 即可插入 // TODO: ,光标停留在冒号后供你直接输入内容。
常见错误现象:快捷键没反应 → 检查是否与其他插件冲突(如 Vim 插件会劫持 Ctrl+Alt+T);插入后多出换行 → 确保 $1 后没空格或多余字符。
用代码片段(todo + Tab)更灵活,支持语言限定
如果你只希望 todo 在 JavaScript 文件里触发,而在 Python 里不生效,代码片段比全局快捷键更可控。
配置方法:
- 按
Ctrl+Shift+P,输入Preferences: Configure User Snippets,选javascript.json(或global.code-snippets做全局) - 添加如下片段:
{
"TODO comment": {
"prefix": "todo",
"body": ["// TODO: $1"],
"description": "Insert a TODO comment"
}
}之后在 JS 文件中输入 todo,按 Tab 即可展开。支持多光标:选中多行变量名后输入 todo + Tab,每行都会插入独立 // TODO:。
容易踩的坑:prefix 必须全小写;若在 TypeScript 文件中失效,需单独配 typescript.json 或改用全局片段; 表示光标最终位置,别写成 <p>容易踩的坑:<code>prefix 必须全小写;若在 TypeScript 文件中失效,需单独配 typescript.json 或改用全局片段;$1 表示光标最终位置,别写成 $0(会跳走)。
别用块注释 /* TODO: */ 代替行注释 // TODO:
Todo Tree 和 TODO Highlight 这类主流插件默认只识别行级注释模式(// TODO:、# TODO:、; TODO:),对 /* TODO: */ 支持极弱——即使正则强行匹配,也会因跨行、嵌套、缩进等问题导致漏扫或误定位。
真实影响:
- 侧边栏
Todo Tree列表为空,你以为没配置好,其实是注释格式不被认 - 搜索
TODO时,Ctrl+Shift+F默认忽略块注释区域(尤其在 JSX/TSX 中) - 团队协作时,CI 工具(如 eslint-plugin-todo)通常只校验行注释
例外情况:只有当你明确修改了 todo-tree.regex.regex 并加入 /*.*?TODO:/ 类正则,且确保无嵌套、无跨文件干扰,才可勉强用块注释。但维护成本远高于统一用 // TODO:。
插件不是必须的,但 Todo Tree 的三项配置必须加
装完 Todo Tree 插件后,侧边栏常为空——这不是插件坏了,而是默认配置太保守。
打开 settings.json,至少补这三行(缺一不可):
"todo-tree.tree.showTags": true, "todo-tree.general.tags": ["TODO", "todo", "FIXME", "fixme", "NOTE", "note"], "todo-tree.regex.regex": "((//|#|/\*|\*/|<!--|;|^)\s*($TAGS)(?=:|\s|$)|^\s*- \[ \])"
关键点:
-
"todo-tree.tree.showTags": true才会让侧边栏显示树形列表,否则图标灰着不动 -
"todo-tree.general.tags"必须同时包含大小写,否则// todo:不会被捕获(默认regexCaseSensitive为true) - 正则里的
/\*和\*/是转义写法,复制时千万别漏掉反斜杠;$TAGS是插件内置变量,不能手动替换成字符串
复杂点在于:正则一旦写错(比如多一个括号、少一个转义),VSCode 不报错,只是静默失效——建议改完后重启 VSCode,再在新文件里写一行 // todo: test 看侧边栏是否立刻出现。


















