代码改变世界

深入解析:VSCode 设置中文

2026-01-24 11:52  tlnshuju  阅读(1)  评论(0)    收藏  举报

1、点击

2、选择install

3、重启

4、如果重起不成功选择设置:

出现搜索框

选择:

然后重启就好了:

通过C语言编译环境 安装下面几个插件就能够了:

1、安装 MinGW-w64

1️⃣ 打开这个网址:
https://winlibs.com/https://cygwin.com/cgi-bin2/package-grep.cgi?grep=mingw64-x86_64&arch=x86_64https://winlibs.com/

找到标题类似:

WinLibs standalone build of GCC 13.2.0 + MinGW-w64 11.0.0 (UCRT)

选择:

  • 版本:GCC 13.x

  • 架构:x86_64(64位)

  • Runtime:UCRTMSVCRT 都可以,推荐 UCRT

  • 文件类型:.7z.zip 都行

2、解压

C:\mingw64\

4️⃣ 设置环境变量:

  • 打开“体系属性 → 高级 → 环境变量”

  • 编辑系统变量 Path

  • 添加:

    C:\mingw64\bin

    5️⃣ 验证安装:
    打开 CMD 或 PowerShell 输入

    gcc --version

    如果显示:

    gcc (x86_64-win32-seh-ucrt-gcc-13.x.x) 就成功了。

创建记录 并创建项目配置文件:

配置文件机制与 JSON 的本质关系:

JSON(JavaScript Object Notation)是一种非常简单的数据格式
主要作用:让程序能保存、读取配置或数据结构。

它的语法很固定:

{
"键": "值",
"数字键": 123,
"布尔键": true,
"数组键": ["a", "b", "c"],
"对象键": {
"内部键": "内部值"
  }
}

要点:

  • 外层一定是 {}(对象)

  • 每个键和值之间用冒号 :

  • 多个键值对之间用逗号 ,

  • 字符串要用双引号 " "

  • 不能多写或少写逗号

  • ⚙️ 二、VS Code 为什么用 JSON?

    因为 VS Code 是跨平台的编辑器(Windows/Linux/macOS),
    它需要一种 结构清晰、可读性高、通用性强的方式来保存设置。
    JSON 正好符合这三点。

    所以:

  • VS Code 的配置文件全是 JSON 格式;

  • 插件的设置、快捷键、编译任务、调试参数也都写在 JSON 文件里

  • 三、VS Code 的几个核心 JSON 文件及关系

    文件作用对应 VS Code 菜单
    settings.json保存个人或工作区设置设置(Ctrl +,)
    tasks.json定义编译/构建任务“运行任务” 或 Ctrl + Shift +B
    launch.json定义调试器怎么启动F5 调试
    c_cpp_properties.json定义 C/C++ 插件使用的编译器、头文件路径、IntelliSense 模式C/C++ 插件内部
    extensions.json建议自动安装的插件工作区建议

.vscode/

├─ c_cpp_properties.json   ← 告诉 VS Code:用哪个编译器、C17 标准、头文件路径
├─ tasks.json              ← 定义:按 Ctrl+Shift+B 时执行 gcc main.c -o main.exe
└─ launch.json             ← 定义:按 F5 时启动哪个程序、用哪个调试器 (gdb)

关系图:

VS Code 按键或菜单动作
     │
├─> 读取 tasks.json → 执行编译命令 (gcc)
     │
├─> 读取 launch.json → 启动 gdb 调试程序
     │
└─> 调用 c_cpp_properties.json → 供应智能补全和语法提示

五、JSON 在 VS Code 中的优势

1️⃣ 可视化可编辑:VS Code 会自动高亮 JSON 语法。
2️⃣ 智能提示:输入 "compilerPath" 时,会提示可选字段。
3️⃣ 跨项目通用:你可以把 .vscode 文件夹复制到别的工程直接用。
4️⃣ 完全可控:你能精准定义编译参数、调试选项、头文件路径等。


✅ 六、举个简单例子(你现在工程的运行逻辑)

你按下 F5

  1. VS Code 读 launch.json

  2. launch.json 找到 "preLaunchTask": "build C program"

  3. 去执行 tasks.json"label": "build C program" 的任务
    → 调用 gcc main.c -o main.exe

  4. 编译成功后,启动 GDB 调试器(gdb.exe)运行 main.exe

  5. 同时,智能提示来自 c_cpp_properties.json

这就是三者配合的完整链路。


✏️ 七、总结一句话

VS Code 的一切配备,本质上都是 JSON 文件在告诉它:该做什么、怎么做。

  • JSON 只是“语法规则”

  • .vscode 文件夹是“配置入口”

  • VS Code 根据 JSON 文件内容执行相应操作


settings.json → tasks.json → launch.json → c_cpp_properties.json

SON 就像一张「键值对清单」,
每一条语句都有一个名称(键 key) 和对应的 内容(值 value)

例如:

{
"command": "gcc",
"args": ["main.c", "-o", "main.exe"],
"label": "build C program"
}

名称(key)对应动作/内容(value)含义
"command""gcc"要执行的命令
"args"["main.c", "-o", "main.exe"]命令的参数

"label"

"build C program"给任务起的名字

"command": "gcc"  它就知道要用终端执行 gcc 命令。

三、结构上的“上下级关系”

JSON 文件可以嵌套,
外层是对象 {},里面可以包含多个键值对或更深层对象。

{
"version": "2.0.0",
"tasks": [
    {
"label": "build C program",
"type": "shell",
"command": "gcc",
"args": ["${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"]
    }
  ]
}

这里 "tasks" 是一个“数组”,里面包含一个对象 { ... }
这个对象内部的 "command", "args" 就是该任务的详细配置。
所以 VS Code 看到 "tasks" → 知道要去找任务清单,然后逐项执行。

四、总结一句话

你可以这样理解 JSON:

概念对应意义
“键 (Key)”动作、名称、属性
“值 (Value)”这个动作对应的内容或参数
“对象 {}一组键值对的集合
“数组 []多个对象的有序列表

举个比喻:

{
"灯开关": "打开",
"风扇速度": 3,
"温度设定": 25
}

→ 程序看到这段 JSON 后,就知道:

  • “灯开关” → 打开

  • “风扇速度” → 设置为 3 档

  • “温度设定” → 调到 25℃

同样的逻辑在 VS Code 里:

{
"command": "gcc",
"args": ["main.c", "-o", "main.exe"]
}

VS Code 就知道要调用 gcc 并带上这两个参数。

SON 是一种通用的数据表示格式,最初由 JavaScript 语言衍生而来。
它的语法规则写在官方标准里:

RFC 8259(JSON Data Interchange Format)
https://datatracker.ietf.org/doc/html/rfc8259

对象 = { 成对的 "键": 值 }
键 = 字符串
值 = 字符串 / 数字 / 布尔 / null / 对象 / 数组

所以:

  • “键”(key)是什么名字,JSON 标准并不管

  • 你完全可以写 "hello": "world""light": "on"

  • 它只要求语法合法,不定义这些键有什么“意义”。

换句话说:
JSON 本身不规定键值含义,只规定语法格式。


二、应用层的规范(谁使用,就谁定义)

尽管 JSON 不限制键名,但使用 JSON 的“程序”会定义自己的规范

举几个例子:

使用者JSON 规范由谁定义示例键名
VS CodeVS Code 官方定义version, tasks, command, args, label
npm (Node.js)npm 官方定义name, version, dependencies
Web API各公司/标准定义status, message, data
GitHub Copilot插件内部定义prompt, completion, metadata

所以:
每个使用 JSON 的软件,都会根据自身需求制定“配置文件格式规范”。
这个规范说明了——

什么。就是哪些键奏效,值是什么类型,作用

如果你写了一个它不认识的键,它会忽略报错

三、VS Code 的 JSON 规范(编辑器级)

VS Code 读取的 .json 文件(比如 tasks.json, launch.json, settings.json
都有自己严格的“键值规范”,由Microsoft 官方定义

比如 tasks.json 的文档就在这里:
VS Code Tasks Schema

{
"version": "2.0.0",
"tasks": [
    {
"label": "build",
"type": "shell",
"command": "gcc",
"args": ["main.c", "-o", "main.exe"]
    }
  ]
}

每个键值的含义:

键名类型作用
"version"字符串指定任务配置版本
"tasks"数组任务列表
"label"字符串任务名称,用于引用
"type"字符串任务类型(shell/process)
"command"字符串要执行的命令
"args"数组命令参数列表

四、怎么知道“哪些键是合法的”?

有三种方式

1️⃣ 官方文档(最权威)

  • tasks.json →VS Code Task Schema

  • launch.json →Debugging Schema

  • c_cpp_properties.json → C/C++ Configurations

  • 2️⃣ VS Code 智能提示

  • 当你在 JSON 文件中输入 "command": 时,
    VS Code 会自动弹出可选项说明。
    它其实就是在后台读取官方定义的 .schema.json 文件。

  • VS Code 内部自带 /schemas/tasks.schema.json

  • 里面列出所有可用的键名与类型。

  • 3️⃣ 直接查看内置 JSON Schema 文件

  • 五、你也可以自己定义键

    假设你写自己的程序去读取 JSON,比如:

  • {
    "motor_speed": 3000,
    "direction": "forward"
    }

    随后在 C 代码中用 JSON 解析库(如 cJSON)去读取:

  • cJSON_GetObjectItem(root, "motor_speed");

    ——这时这些键就是你“自己定义的规范”。

    ✅ 因此,谁解析 JSON,谁定义它的键值规范。

  • 六、总结一句话

    层级谁定义的规定内容
    JSON 标准RFC 8259语法规则(如何写)
    应用层使用 JSON 的软件各自的键名规范
    VS CodeMicrosoft 官方tasks、launch 等配置键定义

JSON 本身没有规定“键”,
是使用它的“应用程序”(如 VS Code)定义了哪些键实用、代表什么意义。

tasks.json

├── "version": "2.0.0"              ← 必须字段,声明版本号

└── "tasks": [                      ← 任务列表(数组)
      {
"label": "build C program", ← 任务名
"type": "shell",            ← 任务类型:shell / process
"command": "gcc",           ← 要执行的命令
"args": [                   ← 参数列表(数组)
"${file}",
            "-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
        ],
"group": {                  ← 分组定义
"kind": "build",        ← 任务类别:build/test/none
"isDefault": true       ← 是否为默认任务(Ctrl+Shift+B)
        },
"problemMatcher": ["$gcc"], ← 用于解析编译错误
"options": {                ← 可选:环境或路径设置
"cwd": "${fileDirname}"
        },
"detail": "Compile with MinGW"
      }
    ]

二、键值解释(来自 VS Code 官方 schema)

键名类型作用
"version"字符串固定为 "2.0.0",声明任务格式版本
"tasks"数组存放所有任务,每个任务都是一个对象 {}
"label"字符串任务名称,用于被引用
"type"字符串任务执行方式:shell(用命令行)或 process(直接进程)
"command"字符串要执行的命令,比如 gccmake
"args"数组命令的参数,例如源文件、输出路径
"group"对象任务分组:build, test, none
"problemMatcher"数组/字符串VS Code 内置的错误解析模板,比如 $gcc 识别 gcc 编译错误
"options"对象执行任务时的附加环境,如工作目录 cwd
"detail"字符串任务说明文字(显示在任务列表里)

三、实际执行顺序图

按 Ctrl + Shift + B
     │
     ▼
读取 tasks.json → 找到默认任务 ("isDefault": true)
     │
     ▼
执行 "command": "gcc"
└── 加上 "args" 里的参数
     │
     ▼
终端运行命令:gcc main.c -o main.exe
     │
     ▼
应用 problemMatcher 解析输出(高亮错误)

四、schema 记录来源(官方定义)

VS Code 的内部 schema 就是一个大的 JSON 定义记录,路径例如

https://raw.githubusercontent.com/microsoft/vscode/main/extensions/configuration-editing/schemas/tasks.schema.json

你在 VS Code 中编辑时能看到自动提示,就是根据这个 schema 文件来的。
它会告诉你:

  • 哪些键是必填的;

  • 哪些只能写在特定层级;

  • 每个键允许什么类型(string / array / object)。

  • 五、再看一个 launch.json 结构对照

  • launch.json

    ├── "version": "0.2.0"

    └── "configurations": [
          {
    "name": "Debug C Program",
    "type": "cppdbg",
    "request": "launch",
    "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${fileDirname}",
    "MIMode": "gdb",
    "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",
    "preLaunchTask": "build C program"
          }
        ]

    这两个文件配合起来:

  • tasks.json → 负责“怎么编译”

  • launch.json → 负责“怎么运行或调试”

  • ✅ 六、总结一句话

    JSON 的schema(模式)定义了哪些键值是合法的、结构层级是什么。
    VS Code 根据这些 schema 自动检查语法和提供智能提示

1) 目录长这样

你的工程/
├─ main.c
└─ .vscode/
├─ c_cpp_properties.json   ← 告诉 VS Code 用哪个编译器
├─ tasks.json              ← Ctrl+Shift+B 怎么编译
└─ launch.json             ← F5 怎么调试/运行

2) c_cpp_properties.json(指向编译器)

{
"version": 4,
"configurations": [
    {
"name": "Win64",
"compilerPath": "C:/mingw64/bin/gcc.exe",
"cStandard": "c17",
"intelliSenseMode": "gcc-x64",
"includePath": [
"${workspaceFolder}/**"
      ],
"defines": []
    }
  ]
}

路径用 /,不要用 \。若你装在别处,改 compilerPath 即可。

3) tasks.json(Ctrl+Shift+B 编译)

PowerShell 版本(你终端默认是 PowerShell 就用该):

{
"version": "2.0.0",
"tasks": [
    {
"label": "build C program",
"type": "shell",
"command": "gcc",
"args": [
"${file}",
        "-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
      ],
"options": { "cwd": "${fileDirname}" },
"group": { "kind": "build", "isDefault": true },
"problemMatcher": ["$gcc"],
"detail": "Compile current C file with MinGW-w64"
    }
  ]
}

如果你用的是cmd 终端,把 options.shell 指成 cmd.exe 也行(通常不需要改)。

4) launch.json(F5 调试运行)

{
"version": "0.2.0",
"configurations": [
    {
"name": "Debug C Program",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "build C program"
    }
  ]
}

5) 用法就两步

  • 编译Ctrl + Shift + B(生成同名 .exe

  • 运行/调试F5(会先编译,再用 gdb 跑,能断点)

6) 后续切到 A53(可选,随时改两处)

将来要给 Zynq A53 (ARMv8-A) 编译:

c_cpp_properties.json

"compilerPath": "C:/path/to/aarch64-linux-gnu-gcc.exe"

tasks.json

"command": "aarch64-linux-gnu-gcc"

其它不变。Linux 版 A53(有系统)就生成 ELF/可执行;裸机用 aarch64-none-elf-gcc 并加裸机链接脚本和启动文件(那是下一步话题)。

7) 常见小坑(1分钟排查)

  • gcc --version 在终端能跑,VS Code 里就能用;否则检查 C:\mingw64\bin 是否进了系统 PATH。

  • JSON 报红线:多半是逗号、引号或层级写错,VS Code 会给出提示。

  • Ctrl+Shift+B 没输出:那是“只编译”,要看输出请按F5 或在 tasks.json 把“编译+运行”合在一起(我也可以给你合并版)

Demo 模板 适用于 VS Code + MinGW-w64 (GCC),按 Ctrl + Shift + B 就能编译并立即运行,按 F5 可调试。

你的工程/
├─ main.c
└─ .vscode/
├─ c_cpp_properties.json
├─ tasks.json
└─ launch.json

⚙️ 1️⃣ c_cpp_properties.json

{
"version": 4,
"configurations": [
    {
"name": "Win64",
"compilerPath": "C:/mingw64/bin/gcc.exe",
"cStandard": "c17",
"intelliSenseMode": "gcc-x64",
"includePath": [
"${workspaceFolder}/**"
      ],
"defines": []
    }
  ]
}

2️⃣ tasks.json(编译 + 自动运行)

PowerShell 版(Windows 10/11 默认终端)

{
"version": "2.0.0",
"tasks": [
    {
"label": "build & run C program",
"type": "shell",
"command": "powershell",
"args": [
"-NoProfile",
"-ExecutionPolicy", "Bypass",
"-Command",
"gcc \"${file}\" -o \"${fileDirname}\\${fileBasenameNoExtension}.exe\"; if ($?) { & \"${fileDirname}\\${fileBasenameNoExtension}.exe\"; Read-Host 'Press Enter to close' }"
      ],
"options": { "cwd": "${fileDirname}" },
"group": { "kind": "build", "isDefault": true },
"problemMatcher": ["$gcc"],
"detail": "Compile and run current C file with MinGW-w64"
    }
  ]
}

说明:

  • 先编译 gcc main.c -o main.exe

  • 编译成功后自动运行 main.exe

  • 执行完停在“Press Enter to close” 等你看输出。

3️⃣ launch.json(F5 调试)

{
"version": "0.2.0",
"configurations": [
    {
"name": "Debug C Program",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "build & run C program"
    }
  ]
}

使用方法

操作快捷键功能
编译并运行Ctrl + Shift + B编译当前 C 文件并自动执行
调试运行F5编译后进入 GDB 调试,可断点、单步
停止调试Shift + F5退出调试状态

小结

这样配置后:

  1. VS Code 通过 c_cpp_properties.json 识别你的 gcc。

  2. tasks.json 定义了“编译 + 运行”的动作。

  3. launch.json 把 F5 调试和编译任务连在一起。

只要复制这三份文件到任何新工程,就能马上写 C 代码并一键运行、调试。