直接修改python.json即可生效,无需重启vscode,但必须确保当前文件语言模式为python(右下角显示“python”);通过ctrl+shift+p执行preferences: configure user snippets并选择python,自动生成或打开对应json文件,片段需用唯一键名、正确json格式及字符串数组body,含${1}等占位符。

直接改 python.json 就能生效,不用重启 VSCode,但必须确保当前文件语言模式是 Python(右下角显示 “Python”,不是 “Plain Text” 或 “JSON”)。
怎么创建一个可用的 Python 代码片段
打开命令面板(Ctrl+Shift+P),输入 Preferences: Configure User Snippets,选 python —— 这会生成或打开 ~/.vscode/snippets/python.json。别手动新建空文件,否则 VSCode 不认。
- 每个片段用唯一键名(如
"pyfunc"),不能重复,否则后定义的覆盖前一个 -
prefix是触发词,比如输pyfunc再按Tab,不是输完回车 -
body必须是字符串数组,每行一个元素,缩进用\t,换行靠数组项自然换行 - 占位符写成
${1:function_name},数字决定Tab跳转顺序,${0}是最终停留位置
为什么 pyfunc 按了 Tab 没反应
最常见原因是语言模式错:右下角显示 “Plain Text” 或 “JSON” 时,python.json 片段完全不加载。哪怕文件后缀是 .py,也得手动点右下角切换回 “Python”。
- 检查
files.associations设置里有没有把*.py映射到其他语言(比如误设成"*.py": "javascript") - 工作区级片段(
.vscode/snippets/python.json)优先级高于用户级,但只在该文件夹内生效;如果同时存在,以工作区为准 - 片段里写了语法错误(比如少逗号、引号不配对),整个
python.json会失效,VSCode 不报错,只是静默忽略
几个真正省时间的模板示例
别堆砌冷门功能,先配这三类高频结构,覆盖 80% 日常编码场景:
-
pymain:对应if __name__ == "__main__":块,body设为["if __name__ == \"__main__\":", "\t${1:pass}"] -
pytest:单元测试函数,body用["def test_${1:name}(${2}):", "\t${3:assert True}"],光标停在 assert 后方便改 -
pyreq:快速写requests.get调用,body包含import requests和带timeout=5的模板,避免每次手敲超时参数
跨设备同步片段要注意什么
代码片段本身不自动同步,靠 Settings Sync 插件上传时,默认只同步设置项,snippets/ 目录需手动加入同步白名单,或直接把 python.json 提交到项目 .vscode/snippets/ 下。
- 团队共用时,推荐放工作区路径(
.vscode/snippets/python.json),避免成员本地用户级配置冲突 - 变量如
$TM_FILENAME_BASE可插入当前文件名,但别依赖$CLIPBOARD—— VSCode 在非焦点窗口下读不到剪贴板 - 如果片段里用了大量
${2:...}占位符,但实际只填第一个就按回车,后续占位符会残留未替换文本,建议最多设 3–4 个关键跳转点
真正卡住效率的从来不是模板数量,而是每次输错 prefix 或语言模式不对——先盯住右下角那个小标签,比背一百个前缀有用得多。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











