vs code 的 python 代码片段必须使用严格命名的 python.json 文件,通过命令面板配置生成,prefix 设为全小写 "main",body 为 ["if name == \"main\":", " $0"],且右下角语言模式须为 python。

python.json 文件名必须严格匹配语言 ID
VSCode 不会识别 py.json、python-snippets.json 或 my-python.code-snippets 这类文件。它只认官方语言 ID 对应的 python.json,且必须放在正确路径下:~/.vscode/snippets/(macOS/Linux)或 %APPDATA%\Code\User\snippets\(Windows)。手动创建文件无效——必须通过命令面板执行 Preferences: Configure User Snippets → 选择 Python,VS Code 才会自动生成并打开正确的 python.json。
prefix 建议用 main 而不是 ifmain
虽然 ifmain 看似语义明确,但实际使用中容易输错、记混;而 main 更短、更符合直觉,也和 PyCharm 默认行为一致。输入 main + Tab 即可展开,无需额外记忆。注意:prefix 必须全小写、无空格、无特殊字符,否则不触发。
-
prefix设为"main",不是"Main"或"if __name__" - 别在
body里写if __name__ == "__main__":后直接跟pass——多数场景需要留空缩进,方便立刻写逻辑 - 确保
body是字符串数组:["if __name__ == \"__main__\":", " $0"],不是单个字符串或含换行符的字符串
$0 必须显式写在 body 最后一行
漏掉 <p>漏掉 <code>$0 是最隐蔽的失效原因:片段能展开,但光标停在第一行末尾,而不是你期望的缩进块内。这会导致每次都要手动按 Enter + Tab 调整位置,完全抵消效率提升。
Enter + Tab 调整位置,完全抵消效率提升。-
$0表示最终光标停留点,建议放在缩进后的空行,比如" $0" - 不要写成
"$0"(顶格),否则光标落在行首,破坏 Python 缩进语义 - 多个占位符如
$1、$2可用于带参数的模板(如函数定义),但if __name__场景只需$0
右下角语言模式不对,snippet 就永远不会弹出来
你在 hello.py 里输入 main 没反应?先看编辑器右下角显示的是不是 Python。如果显示 Plain Text、JavaScript 或 TypeScript React,哪怕文件后缀是 .py,片段也绝不会触发。
- 手动切换:按
Ctrl+Shift+P→ 输入Change Language Mode→ 选Python - 验证是否生效:临时在
body里加一行"# lang=${TM_LANGUAGE}",展开后看是否输出# lang=python - 禁用 Prettier、ESLint 等扩展再试一次——它们可能劫持了
Tab键行为
真正卡住人的从来不是语法多难,而是 VS Code 在静默中拒绝加载:JSON 多一个逗号、body 少一个引号、右下角语言模式错配——它都不报错,只让你反复怀疑自己。确认 python.json 路径对、格式对、$0 在、语言模式对,这四点齐了,main + Tab 就一定出。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











