我们来用通俗易懂、生活化的方式,一次性讲清楚 VS Code 中两个非常重要的配置文件:launch.jsonsettings.json。它们虽然名字相似,但用途完全不同。


一、先说结论(一句话总结)

  • settings.json:是 VS Code 的“个人偏好设置”——比如字体大小、主题颜色、自动保存等,影响的是编辑器本身怎么工作
  • launch.json:是 VS Code 的“调试启动说明书”——告诉 VS Code 怎么运行和调试你的代码(比如用哪个解释器、传什么参数、断点怎么设等)。

💡你可以把 VS Code 想象成一辆车:

  • settings.json 是你调整座椅、后视镜、空调温度(让你舒服地开车);
  • launch.json 是你告诉车子:“我要去北京,走高速,中途在保定加油”(具体怎么跑这一趟任务)。

二、settings.json —— 编辑器的“个性设置”

1. 文件位置

  • 全局设置(对所有项目生效):
    文件 > 首选项 > 设置 → 点右上角 {} 图标 → 打开 settings.json
    如果没有直接按 Ctrl + Shift + P,输入settings.json进行创建
  • 项目级设置(只对当前项目生效):
    在项目根目录下创建 .vscode/settings.json

项目级设置会覆盖全局设置。

2. 常见配置项(带解释)

{
  // 字体大小
  "editor.fontSize": 16,

  // 自动保存(改完就存,不用手动 Ctrl+S)
  "files.autoSave": "afterDelay",

  // 制表符用空格代替,按一次 Tab = 2 个空格
  "editor.tabSize": 2,
  "editor.insertSpaces": true,

  // 显示行号
  "editor.lineNumbers": "on",

  // 保存时自动格式化代码(需要安装格式化插件如 Prettier)
  "editor.formatOnSave": true,

  // Python 特定设置:指定 Python 解释器路径(仅对本项目)
  "python.defaultInterpreterPath": "./venv/bin/python",

  // 忽略某些文件不显示在资源管理器里
  "files.exclude": {
    "**/__pycache__": true,
    "*.log": true
  }
}

3. 关键特点

  • 影响编辑体验,不影响代码运行逻辑。
  • 很多设置可以通过图形界面(设置页面)修改,VS Code 会自动写入 settings.json
  • 插件也会读取这里的配置(比如 ESLint、Prettier)。

三、launch.json —— 调试的“启动脚本”

1. 文件位置

  • 只在项目中存在:必须放在项目根目录下的 .vscode/launch.json
  • 如果没有,点击左侧“运行和调试”面板 → “创建 launch.json” 就能自动生成

2. 核心概念:配置(configurations)

一个 launch.json 可以包含多个调试配置,比如:

  • 调试主程序
  • 调试测试用例
  • 连接远程调试

3. 举个 Python 调试的例子(最常见)

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: 当前文件",       // 调试配置的名字(显示在下拉菜单里)
      "type": "python",                // 调试器类型(Python、Node.js、C++等)
      "request": "launch",             // 启动方式:launch(本地运行)或 attach(连接已运行的进程)
      "program": "${file}",            // 要运行的文件:${file} = 当前打开的文件
      "console": "integratedTerminal", // 在 VS Code 内置终端运行(而不是弹出新窗口)
      "cwd": "${workspaceFolder}",     // 工作目录 = 项目根目录
      "env": {},                       // 环境变量(可选)
      "args": []                       // 命令行参数(比如 ["--port", "8080"])
    }
  ]
}

4. 常用变量说明(那些 ${xxx} 是啥?)

变量 含义
${file} 当前打开的文件完整路径
${workspaceFolder} 当前项目根目录
${fileBasename} 当前文件名(不含路径,如 main.py
${fileDirname} 当前文件所在目录

5. 其他语言示例(Node.js)

{
  "name": "Launch Node.js",
  "type": "node",
  "request": "launch",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "env": {
    "NODE_ENV": "development"
  }
}

6. 关键特点

  • 只在你点“调试”按钮(F5)时生效
  • 不同语言需要不同的 type(由对应插件提供,比如 Python 插件提供 python 类型)。
  • 可以配置多个 configuration,调试时从下拉菜单选择。

四、对比总结表

项目 settings.json launch.json
作用 设置编辑器行为 设置如何运行/调试代码
生效时机 打开 VS Code 或项目时 点击“调试”(F5)时
位置 全局 or 项目级 仅项目级(.vscode/ 下)
是否必需 否(有默认值) 调试时才需要
示例配置 字体、自动保存、缩进 程序入口、参数、环境变量

五、新手建议

  1. 先用图形界面设置:VS Code 的设置(齿轮图标)和调试面板都很友好,改完会自动生成 JSON。
  2. 不要怕改错:这两个文件都是纯文本,改错了删掉重来就行。
  3. 项目共享时
    • settings.json(项目级)可以提交到 Git,让团队统一格式。
    • launch.json 也可以提交,方便大家用相同方式调试。
  4. 遇到问题:按 Ctrl+Shift+P 输入 “Preferences: Open Settings (JSON)” 或 “Debug: Open launch.json” 快速打开。

✅ 现在你应该明白了:

  • 想让代码看起来舒服?→ 改 settings.json
  • 想让代码跑起来能调试?→ 配 launch.json

以上是在配置Django项目时遇到配置文件搞不清楚而进行的学习,下面解决Django项目配置的问题:
配置如下,当时以为配置重复或者冲突:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Django",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}/manage.py",
            "args": [
                "runserver",
                "--noreload"
            ],
            "django": true,
            "justMyCode": true,
            "env": {
                "PYTHONPATH": "${workspaceFolder}",
                "DJANGO_SETTINGS_MODULE": "helloworld.settings"
            },
            "console": "integratedTerminal"
        },
        {
            "name": "Python: Current File",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true
        }
    ]
}

你的 launch.json 不是重复的,而是两个不同的调试配置,各自有明确用途,完全可以共存,而且这种写法非常常见、合理!

下面我用通俗的方式帮你逐条解释,并说明它们的区别和用途:


🔹 配置 1:"name": "Python: Django"

{
  "name": "Python: Django",
  "type": "debugpy",
  "request": "launch",
  "program": "${workspaceFolder}/manage.py",
  "args": ["runserver", "--noreload"],
  "django": true,
  "justMyCode": true,
  "env": {
    "PYTHONPATH": "${workspaceFolder}",
    "DJANGO_SETTINGS_MODULE": "helloworld.settings"
  },
  "console": "integratedTerminal"
}
✅ 用途:

专门用来调试整个 Django 项目(启动开发服务器并支持断点调试)。

📌 关键字段解释:
  • "program": 运行 manage.py(Django 的入口)
  • "args": 相当于你在终端输入 python manage.py runserver --noreload
    • --noreload 很重要!因为 Django 默认会自动重启子进程,导致调试器断开。加了这个才能稳定调试。
  • "django": true: 告诉 VS Code 这是 Django 项目,启用 Django 特有的调试支持(比如模板调试等)
  • "env": 设置环境变量
    • DJANGO_SETTINGS_MODULE: 指定你的 settings 文件路径(这里是 helloworld/settings.py
    • PYTHONPATH: 确保项目根目录在 Python 路径中,避免导入错误
  • "console": 在 VS Code 内置终端运行,方便看日志

💡 你点击“运行和调试” → 选择 “Python: Django” → 就能启动带调试功能的 Django 开发服务器!


🔹 配置 2:"name": "Python: Current File"

{
  "name": "Python: Current File",
  "type": "debugpy",
  "request": "launch",
  "program": "${file}",
  "console": "integratedTerminal",
  "justMyCode": true
}
✅ 用途:

用来调试当前打开的任意 Python 文件(比如一个独立脚本 test.py、工具函数等)。

📌 关键字段解释:
  • "program": "${file}": 运行你当前正在编辑的文件
  • 没有指定 envargs,所以它就是一个通用的“运行当前文件”配置
  • 适合测试单个 .py 文件,而不是整个 Web 项目

💡 你打开 utils.py,然后选择这个配置点 F5,就会直接运行 utils.py 并调试。


❓那它们会冲突吗?

不会!
VS Code 的调试系统允许你定义多个配置,每次调试前你可以从下拉菜单选择用哪一个:

  • 调 Django?选 “Python: Django”
  • 调一个脚本?选 “Python: Current File”

✅ 建议保留两者

这是 最佳实践!很多官方文档和开发者都这么配。

如果你只做 Django 开发,也可以删掉第二个;但保留它对调试工具脚本、数据处理脚本等非常方便。


🔧 小优化建议(可选)

如果你的 Django 项目使用了虚拟环境,可以加上:

"python": "${workspaceFolder}/venv/bin/python"  // Linux/macOS
// 或
"python": "${workspaceFolder}/venv/Scripts/python.exe"  // Windows

这样确保调试时用的是项目虚拟环境的 Python。


✅ 总结

配置名 用途 是否重复
Python: Django 启动并调试整个 Django 服务 ❌ 不重复
Python: Current File 调试当前打开的任意 .py 文件 ❌ 不重复

你的配置完全正确,无需删除任何一个!

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐