python.json文件位于用户级(~/.vscode/snippets/python.json)或工作区级(.vscode/snippets/python.json),修改后无需重启VSCode,但需确保当前文件语言模式为Python(右下角显示“Python”),否则静默失效。

python.json 文件在哪,改完要不要重启?
直接改 python.json 就生效,不用重启 VSCode —— 但前提是当前文件的语言模式必须是 Python(右下角显示“Python”,不是“Plain Text”或“JSON”)。误设成其他语言时,片段完全不加载,连报错都没有,静默失效。
路径分两类:
• 用户级:打开命令面板 Ctrl+Shift+P → 输入 Preferences: Configure User Snippets → 选 python,自动打开 ~/.vscode/snippets/python.json
• 工作区级:在项目根目录下建 .vscode/snippets/python.json,只对该文件夹生效,优先级高于用户级
写一个能用的代码片段,关键字段怎么填?
常见错误是 JSON 格式错(少逗号、引号不配对)或 body 不是字符串数组。VSCode 不报错,整个 python.json 会被忽略。
-
prefix:触发词,比如输pymain再按Tab,别用太长或太泛的词 -
body:必须是字符串数组,每行一个元素;缩进用\t,不是空格;换行靠数组项自然实现 -
${1}、${2}是 Tab 跳转顺序,${0}是最终光标停留位置 -
key(最外层对象名)必须唯一,重复会覆盖前一个
示例(pymain 片段):
立即学习“Python免费学习笔记(深入)”;
{
"pymain": {
"prefix": "pymain",
"body": [
"if __name__ == \"__main__\":",
"\t${1:pass}",
"${0}"
],
"description": "插入 if __name__ == '__main__' 块"
}
}
哪些模板真正省时间?别堆砌冷门功能
高频结构覆盖 80% 场景,先配这三类:
-
pymain:带${1:pass}占位,Tab 后直接改主体逻辑 -
pytest:用def test_${1:name}(${2}):+\t${3:assert True},光标停在 assert 后,方便补断言 -
pyreq:含import requests和requests.get(url, timeout=5),避免每次手敲超时参数
慎用 $CLIPBOARD —— VSCode 对剪贴板变量支持不稳定,容易触发失败;$TM_FILENAME_BASE 这类文件上下文变量更可靠。
团队共用或换设备,片段怎么同步才不丢?
Settings Sync 插件默认不同步 snippets/ 目录,得手动加白名单。更稳妥的做法是把 .vscode/snippets/python.json 提交进 Git —— 放工作区路径,而非用户级路径。
多人协作时,工作区级片段天然优先,且避免成员本地配置冲突。如果有人误删或格式损坏,拉取最新代码就能恢复,比查各自 ~/.vscode 安全得多。
最后提醒:片段里写的不是 Python 语法检查器,它不校验逻辑对错。哪怕你写了个 while True: break 模板,VSCode 也照插不误 —— 它只管“快”,不管“对”。


















