资讯详情

资讯详情

VSCode settings.json 配置详解:从环境到远程与AI插件

1. 为什么说 settings.json 才是 VSCode 的真正入口VSCode 的 settings 看起来就是一个齿轮图标点进去是个图形化界面很多人改两三个选项就关掉了。但实际用下来你会发现所有能让你“哇”一声的配置最后都会落到一个叫 settings.json 的文件里。之前有读者问我为什么照着网上的教程装了 C/C 插件还是不能跳转为什么配了 Python 环境还是提示找不到解释器为什么接了 Codex、DeepSeek 之后一点反应都没有——这些问题十有八九都是 settings 没看明白。settings 不是“设置页”它是一个贯穿编辑器行为、插件行为、远程行为、工具链行为的核心配置系统。我见过不少人在图形界面里找半天某个选项其实那个选项根本不在 UI 里只存在于 settings.json 中。尤其是插件提供的配置项VSCode 官方只会把高频项暴露在设置面板剩下的长尾配置都要靠 JSON 手写。所以与其说“vscode settings”是一个功能入口不如说它是整个编辑器的中枢神经。这篇文章我就从配置文件的定位、高频项拆解、环境配置、远程开发、AI 插件接入、常见卡顿排查这几个维度把 settings 的用法和原理一次讲透。1.1 settings 入口远不止一个齿轮按钮打开 settings 有三个常用方式左下角齿轮图标、快捷键Ctrl,、命令面板输入Preferences: Open Settings。但大多数人不知道的是图形界面右下角有个小图标长得像一张纸带个箭头点一下就能直接打开 JSON 文件——我通常建议直接在这个文件里操作因为你能看到完整配置不会被 UI 过滤掉一部分选项。更关键的是VSCode 里存在多个 settings.json 文件它们有不同的作用域配置层级位置生效范围用户级用户目录下的AppData/Roaming/Code/User/settings.json所有项目工作区级项目根目录.vscode/settings.json当前项目远程级远程服务器或 WSL 内的 user settings远程会话默认配置编辑器内置只读配置兜底很多人改完配置说“没生效”先别怀疑自己写错了检查一下改的是不是正在用那个层级的文件。比如在 WSL 里打开项目编辑器实际上运行在 WSL 环境里改 Windows 本地用户配置对远程窗口是无效的。同一份配置你在图形界面看到的是合并后的结果但写在哪个文件里决定了它的影响范围。1.2 三档配置的优先级默认、用户、工作区VSCode 的配置加载顺序是从底层往上叠默认配置是所有选项的初始值用户配置覆盖默认值工作区配置再覆盖用户配置。这个优先级关系非常重要因为工作区配置会自动同步给协作的人只要.vscode/settings.json被提交到 Git 仓库同事拿到代码后 IDE 就会自动应用这套配置。这里有一个容易踩的坑很多团队会把editor.tabSize、files.encoding、python.defaultInterpreterPath这类跟个人习惯强相关的配置写进工作区配置结果同事打开项目后格式突然全变或者 Python 解释器指向一个不存在的路径。我的习惯是工作区配置只放项目级约定比如python.analysis.extraPaths、C/C 的includePath个人偏好全部放用户配置。这样换机器、换仓库都不会被别人的设置绑架。1.3 settings.json 的实时监控机制VSCode 对 settings.json 是实时监听文件变化的保存后立即生效大多数改动不用重启编辑器。但“大多数”不等于全部有些配置涉及语言服务进程或终端进程的启动参数改了之后必须重载窗口甚至彻底重启才能生效。判断标准很简单打开命令面板跑一个Developer: Reload Window如果问题消失就是需要重载的配置如果还在再看看是不是被哪个插件覆盖了。这里额外说一个排查技巧settings.json 右侧会在你光标悬停时显示该项的默认值、作用域和描述如果某个配置项标着machine-scoped意味着它被远程环境读取后不会再受本地文件影响这类配置要是写错了图形界面里根本看不出来只能靠 JSON 注释定位。所以我一直建议在 settings.json 里保持写注释的习惯JSON 标准不允许注释但 VSCode 自己支持//注释放心用。2. 高频配置项拆解从字体缩进到终端集成2.1 编辑器行为与观感设置不管你是写前端、写 C 还是写 Python有几个配置是所有 VSCode 用户都会碰到的先把它们理顺能解决日常一半的烦躁感。我直接给一套比较稳的配置每项都标了用途{ editor.fontSize: 15, editor.fontFamily: Cascadia Code, JetBrains Mono, Consolas, monospace, editor.fontLigatures: true, editor.tabSize: 2, editor.detectIndentation: true, editor.formatOnSave: true, editor.wordWrap: off, editor.renderWhitespace: selection, editor.minimap.enabled: false, editor.smoothScrolling: true, editor.cursorBlinking: phase, files.autoSave: afterDelay, files.autoSaveDelay: 1000, workbench.startupEditor: none, workbench.colorTheme: One Dark Pro, window.zoomLevel: 1 }这里几个容易被忽略的点detectIndentation如果开着VSCode 会根据当前文件内容自动切换 tab 宽度你在 settings 里写死tabSize也没用因为这个配置是“自动检测”优先。formatOnSave是个双刃剑配合 Prettier 或 C/C 扩展时很好用但如果项目里同时存在 ESLint 和 Prettier 且规则冲突每次保存都会把文件改得乱七八糟建议先统一项目格式化工具再开启。fontLigatures只对支持连字的字体有效用默认 Consolas 开这个选项是看不到效果的需要装 Cascadia Code 这类字体。还有files.autoSave默认是off我改成afterDelay加 1000ms 延迟好处是手一停就自动保存不怕写一半编辑器崩溃丢代码坏处是配合 git 时你还没写完的代码已经被落盘了误操作会被记录到历史里。如果团队协作频繁建议还是用onFocusChange焦点一离开编辑器就保存语义更清晰。2.2 文件编码与换行乱码问题的一半根源热搜词里出现“vscode运行java报错乱码”“c语言环境乱码”很多人第一时间去调插件、重装编译器其实一半的乱码问题都出在files.encoding上。VSCode 默认用 UTF-8 读写文件但 Windows 控制台程序经常默认 GBKC/C 编译输出在集成终端显示乱码往往不是代码问题而是终端码表和源码文件的编码不一致。我推荐的一套组合是{ files.encoding: utf8, files.autoGuessEncoding: true, terminal.integrated.encoding: utf8, [cpp]: { files.encoding: gbk } }autoGuessEncoding打开后VSCode 会尝试猜测现有文件的编码避免你打开一个 GBK 的旧项目时满屏菱形乱码。但这只是“阅读”层面的兜底真正要根治乱码还是得让源码、编译器、终端三者编码统一。C/C 项目建议统一 UTF-8然后在编译命令里加上 UTF-8 参数MSVC 用/utf-8GCC 用-fexec-charsetUTF-8终端则把terminal.integrated.encoding设为 UTF-8这样基本能覆盖绝大多数乱码场景。换行符也一样files.eol可以强制文件用\n还是\r\n。跨平台项目里最怕混入两种换行git 会不停提示文件变更。建议单位统一用\n然后设置files.eol: \n同时配合项目根目录放一个.editorconfig文件ELN 这类历史遗留文件才不会被反复改动。2.3 集成终端与 Maven/QT 工具链路径VSCode 的集成终端是个被严重低估的配置入口很多工具链的坑最终都能在这里体现。比如热搜词里有“vscode maven插件怎么指定settings页面路径”这个其实说的是让 Java 的 Maven 插件读取你自己那份settings.xml而不是默认的~/.m2/settings.xml。在 VSCode 里是这个配置{ java.configuration.maven.globalSettings: D:\\tools\\maven\\conf\\settings.xml, java.configuration.maven.userSettings: D:\\tools\\maven\\conf\\settings.xml }配置好之后Maven 插件才能跑到你指定的私服镜像、本地仓库路径和认证信息。注意 Windows 路径里的反斜杠要写成双反斜杠或者统一用正斜杠。如果你改了配置但 Maven 还是从老路径读先打开命令面板执行Java: Clean Java Language Server Workspace清掉语言服务的缓存再试这个操作我至少帮别人解决过十几次 Java 环境不生效的问题。QTCreator 相关需求也一样vscode配置qt designer本质是告诉 VSCode 去哪里启动 Qt Designer 可执行文件{ QTCreator.designerPath: C:\\Qt\\5.15.2\\mingw81_64\\bin\\designer.exe, QTCreator.qtPath: C:\\Qt\\5.15.2\\mingw81_64 }这类“外部工具路径”配置的通用规律是看清插件文档要求的字段是Path还是Command同样的程序有的插件要求给目录有的要求给完整可执行文件路径写错一个层级就不生效。集成终端本身的配置也很关键尤其是字体渲染和 shell 路径{ terminal.integrated.fontFamily: JetBrains Mono, terminal.integrated.fontSize: 14, terminal.integrated.defaultProfile.windows: Git Bash, terminal.integrated.cursorStyle: line, terminal.integrated.shellIntegration.enabled: true, terminal.integrated.scrollback: 10000 }shellIntegration.enabled是 VSCode 1.60 之后的特性它会给 shell 注入一些辅助钩子让终端支持目录同步、提示符识别等功能。但这玩意偶尔会和某些 shell 配置冲突表现是终端启动后提示corrupted history file或者command not found。如果遇到关闭 shell integration 通常就能恢复。3. 环境配置不是玄学C/C、Python、Java 的配置原理3.1 C/CcompilerPath 与 includePath 的意义很多初学者装完 C/C 扩展后随手写个#include stdio.h发现没报错就以为配置好了直到写复杂项目时vector、map被划红线才知道 include 路径没配全。C/C 扩展里最核心的配置项是C_Cpp.default.compilerPath、C_Cpp.default.includePath和C_Cpp.default.intelliSenseMode。它们解决的是同一件事综合代码分析器IntelliSense用哪套头文件来解析你的代码。compilerPath告诉扩展编译器在哪扩展可以据此推断标准库头文件的位置includePath是额外的搜索目录一般把你项目里的include、third_party加进去。一个常见的误区是以为装了 MinGW 或 MSVC 之后扩展会自动找到所有头文件。实际上 VSCode C/C 扩展确实会尝试探测但探测逻辑很保守遇到编译器版本众多、环境变量混乱的机器就会漏掉某些头文件。这时候直接写配置{ C_Cpp.default.compilerPath: C:/mingw64/bin/gcc.exe, C_Cpp.default.includePath: [ ${workspaceFolder}/**, C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c, C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c/x86_64-w64-mingw32 ], C_Cpp.default.intelliSenseMode: gcc-x64 }写完之后在任意 .c/.cpp 文件里执行C/C: Rescan IntelliSense Database让索引重建一次。如果代码提示还是不出来多半是configurationProvider被某个 CMake 插件接管了插件会用自己的编译命令重新生成 include 路径此时手动配置会被覆盖。对 CMake 项目建议直接安装 CMake Tools 扩展它能把编译参数传给 C/C 扩展那才是最省心的方案。3.2 Python解释器路径与虚拟环境vscode python环境配置的热度一直居高不下但翻来覆去核心就两个配置解释器路径和代码分析路径。图形界面的做法是CtrlShiftP输入Python: Select Interpreter选择虚拟环境这步的背后其实就是在往settings.json里写python.defaultInterpreterPath。手动配置长这样{ python.defaultInterpreterPath: ${workspaceFolder}/.venv/bin/python, python.analysis.extraPaths: [./src], python.terminal.activateEnvironment: true, python.terminal.activateEnvInCurrentTerminal: true }python.analysis.extraPaths是很多人忽略的一项它的用途是告诉 Python 扩展去哪些目录寻找模块用于代码跳转和提示。如果你的项目里模块是运行时动态生成的或者有site-packages之外的自己的包路径不加这个配置函数跳转就会失败。还有一个容易翻车的点python.terminal.activateEnvironment会在每次打开集成终端时自动激活虚拟环境。这看起来很贴心但如果你的项目虚拟环境创建方式有特殊依赖比如依赖.env文件自动激活反而会导致环境不完整。遇到这种问题把它设为 false手动运行source .venv/bin/activate更可控。另外.vscode/settings.json里如果指定了python.defaultInterpreterPath但这个路径在别的机器上不存在Python 扩展会退回到检测机制此时状态栏会显示一个感叹号点开就能看到实际选择的解释器和检测日志。3.3 Java 乱码与 files.encoding 的联动关系Java 项目在 VSCode 里的乱码通常分两种情况源码文件乱码和运行输出乱码。源码文件乱码基本就是前面说的编码配置问题把files.encoding改成正确的编码再 reload 就能解决。运行输出乱码则涉及 Java 语言服务的编码参数。红帽 Java 扩展Language Support for Java提供了一组 JVM 参数配置{ java.jdt.ls.vmargs: -Dsun.jnu.encodingUTF-8 -Dfile.encodingUTF-8 }加上这行之后Java 语言服务本身的编码就会固定为 UTF-8。如果控制台输出还是有乱码还需要检查launch.json里的 console 设置一般是console: integratedTerminal配合终端 UTF-8 设置就齐了。我建议每个 Java 项目都在.vscode/settings.json里固定这几个维度files.encoding、java.jdt.ls.vmargs、java.configuration.maven.userSettings。这三个组合起来基本能防住 90% 的乱码和环境串台问题。4. 远程开发与工作区设置SSH、WSL 和网络问题4.1 Remote-SSH 的 config 文件由 settings 指定热搜词里有“vscode连接ssh远程服务器”“vscode远程config文件”这两个说的其实是同一条链路VSCode 通过 Remote-SSH 插件连接服务器时从哪里读取 SSH 的 Host 配置。默认情况下 Remote-SSH 读的是~/.ssh/config但很多人公司服务器有多个每个登录方式还不一样这时候你肯定不想把所有的 Host 都堆在默认路径里。可以在 settings 里指定每个远程窗口用哪个配置{ remote.SSH.configFile: D:\\ssh\\configs\\company_config, remote.SSH.showLoginTerminal: true, remote.SSH.useLocalServer: false }remote.SSH.configFile可以指向任意文件但要注意它只对新开的远程窗口生效如果当前已经连着远程改完 config 之后建议执行Remote-SSH: Kill VS Code Server on Host再重新连接。useLocalServer控制是否在本机先起一个代理进程处理 SSH 连接默认 true一般不用管如果你遇到连接管理与旧版本 VSCode 不兼容的问题可以设为 false 走一次纯 SSH 流程排查。远程开发场景下的另一个容易坑的是插件安装远程窗口里 CtrlShiftX 看到的是“已安装于远程”的插件列表它和本地插件列表是分开的。settings 里可以控制哪些插件强制不装到远程{ remote.extensionKind: { esbenp.prettier-vscode: [ui], ms-python.python: [workspace] } }ui代表这个插件只在本地 UI 进程运行workspace代表它要跑到远程端。格式化类插件一般放本机跑语言服务类插件一般放远程跑。如果发现某个插件在远程窗口里不工作先查一下 extensionKind 是不是被设置成了本机模式——这是远程开发里最隐蔽的“怎么装都没反应”的原因之一。4.2 WSL 环境下 settings 的层级关系在 WSL 里开发VSCode 会启动一个 WSL 模式窗口此时存在两套用户设置Windows 里一套WSL 里一套。Windows 里的用户 settings 不会自动同步到 WSL但 WSL 窗口的 settings UI 会同时读取两个来源最终以 WSL 里的为准。具体机制是Remote-WSL 插件会在 WSL 的~/.vscode-server/data/Machine/settings.json里写入远程环境配置你在 WSL 窗口里改用户设置本质改的是这份文件。Windows 端的某些配置如主题、字体可以跟随窗口传递但像python.defaultInterpreterPath、C/C 编译器路径这类系统环境相关的配置必须手动在 WSL 的设置里重新指定一遍。举个例子你在 Windows 用户设置里写了python.defaultInterpreterPath: C:/Python39/python.exe然后在 WSL 窗口里打开一个 Linux 项目这个路径是无效的——WSL 里根本没有 C 盘这个路径它存在/mnt/c/。正确做法是在 WSL 窗口里重新选择解释器VSCode 会自动把配置写到远程 settings 中。所以跨平台开发时要清楚Remote/WSL 窗口的 settings 不是本地设置的影子它是独立的第二套环境。4.3 network unavailable 不显示本地 IP 的排查链热搜词里“network: unavailable 却不显示本地的 ip 了”是一个很具体的问题描述往往出现在连接远程服务器或启动调试服务时。VSCode 状态栏有时会显示network: unavailable但你的机器明明有网。这通常不是 VSCode 本身探测不到网络而是它通过某个网络接口探测 IP 失败。排查链路建议按这个顺序走先确认本地端口和网络是否正常ping 127.0.0.1、ipconfig能看到 IP说明系统网络没问题。检查 VSCode 是否处于 Remote 连接模式。远程连接模式下VSCode 的 network 状态显示的是远程机器的网络状态而不是本地的如果远程机器的network.service没起来或者 SSH 端口被防火墙拦了就会显示 unavailable。检查扩展是否占用了网络探测端口尤其是 Live Share、Code Runner 这类插件它们可能会在本地监听特定端口一旦被其他进程占用VSCode 的网络探测就会异常。尝试关闭remote.SSH.useLocalServer: false后重新连接强制绕过本地代理进程看探测是否恢复。还有一个经常被忽视的点Windows 的 Hyper-V 虚拟网卡、WSL 的 vEthernet 网卡会导致ipconfig里出现多个 192.168.x.x 地址VSCode 在选网卡时可能选到失联的虚拟网卡从而误判网络不可用。如果你装过 Docket Desktop 或 Hyper-V这个现象尤其常见。临时解决办法是在启动 VSCode 前把不需要的虚拟网卡禁用或者用ipconfig /releaseipconfig /renew刷新 DHCP 租约让网络接口状态恢复正常。这个问题本身不难解决难的是定位——它常常伪装成“电脑没网了”的假象让人误删一堆环境变量最后发现只是网卡选择的问题。5. AI 编程插件接入的同一套配置逻辑5.1 Codex、Claude Code、OpenCode 在 settings 里的共同落点VSCode 生态里接入 AI 编程助手的方法五花八门但从 settings 的角度看它们的配置逻辑是高度统一的要么在 settings.json 里配置 API endpoint、模型名和密钥要么在扩展自己的 UI 里配置最后落点其实也是 settings.json 或者扩展自己的配置文件。以 Codex 接入为例常规做法是装官方扩展然后在设置里指定 API Key 和模型版本。很多人在这一步卡住是因为不清楚扩展设置项的名字打开 settings.json 一顿搜搜不到就以为装失败了。实际上扩展的设置项前缀通常是扩展名比如 OpenCode 类的配置会是{ opencode.apiKey: sk-xxxx, opencode.model: gpt-4o, opencode.baseUrl: https://api.example.com/v1 }Claude Code 相关的扩展也一样大多数以claude-code或者claude开头{ claude-code.apiKey: sk-xxxx, claude-code.model: claude-3-5-sonnet, claude-code.autoApprove: false }核心思路就一句话VSCode 里的 AI 插件本质是一个客户端它需要知道三件事——连到哪个接口baseUrl、用什么模型model、凭什么身份apiKey。搞清楚这个三元组任何类似的插件配置都不会再让你发怵。UI 里填的设置和 settings.json 里写的设置通常会互相覆盖如果你 UI 里填了一个值JSON 里又写了一个值后写入的会生效这个顺序很容易造成“我明明改了为什么不生效”的困惑。5.2 DeepSeek 接入时的 endpoint 与 model 配置DeepSeek 这类国产模型的接入方式也逃不开上面说的三元组逻辑。在 VSCode 里接 DeepSeek通常走的是 OpenAI 兼容接口——提供一个 baseUrl 和一个 API Key然后把 model 指定为 DeepSeek 的模型名。配置示例{ myAi.baseUrl: https://api.deepseek.com/v1, myAi.apiKey: sk-your-key, myAi.model: deepseek-chat }注意不同的 AI 扩展可能在字段命名上不一样但底层参数含义是一样的。如果你用的扩展是 Continue那配置路径又在别处Continue 扩展有自己的config.json不在 settings.json 里管它位于用户目录下的 Continue 文件夹中配置结构是 JSON 数组里面定义 provider 的apiBase、apiKey和model。这里的经验是不要把所有希望寄托在 settings.json 上AI 插件往往有自己独立的配置文件或登录流程。settings 页面搜不到不代表没有配置能力去扩展文档里看它“如何配置 provider”比盲目改 settings 更高效。5.3 为什么改了配置不生效扩展的 reload 机制这个问题几乎每周都会遇到AI 插件配置填写无比正确重启之后依然报 401 或 model not found。这背后大多数是扩展自身的状态缓存问题——API Key 被扩展保存在了全局存储里而 settings.json 的改动并没有触发读取。遇到这种情况我用一套固定的三板斧执行命令面板的Developer: Reload Window让扩展重新读取配置。打开扩展详情页确认它没有独立的“登录”或“Sign in”流程如果有先 Sign out 再重新用 API Key 登录。打开Help Toggle Developer Tools切到 Console 标签看有没有报错信息尤其是CSP相关的报错——一些扩展会因为 Content Security Policy 限制而拒绝访问自定义 baseUrl。eslint 和远程开发那边也是一样的逻辑settings.json 的改动并不直接作用于所有插件很多插件要等你的文件和项目状态变化时才重新计算配置。所以在排错时不要急着怀疑配置语法错误先排除“缓存与加载时机”这个变量。6. 两个容易让人卡住的“设置”问题排查实录6.1 “VSCode 没有编辑配置选项”的原因与修复热搜词里“vscode没有编辑配置选项”是个很典型的困惑。有人打开设置面板找了半天找不到“编辑 settings.json”的入口有人右键插件列表发现“配置扩展设置”是灰的。前者通常是版本和 UI 布局的问题后者通常是插件没有提供可配置项。先看第一种新版 VSCode 的设置面板右上角有一个文档小图标鼠标悬停会显示“打开设置(JSON)”但这个图标只在没有搜索关键词的时候出现一旦你在搜索框里输入内容图标可能被过滤掉。解决办法是先清空搜索词或者直接用快捷键CtrlShiftP输入Open Settings (JSON)。第二种插件不提供配置项的情况比较少见但确实存在一些非常轻量的扩展比如主题右键菜单增强设计上根本没有设置项所以“配置扩展设置”按钮就是灰的。这不代表插件不能配置而是它可能通过命令面板而非 settings.json 暴露配置。运行CtrlShiftP搜插件名前缀看看有没有命令可用如果有“Settings”或“Configure”开头的命令点进去才是该插件的真实配置入口。还有一种情况被很多人忽略你打开的文件不是纯文本文件而是比如图片、PDF 或 Markdown 预览模式此时编辑器认为没有“文本编辑”场景自然不显示编辑配置选项。切到文本编辑器再看选项就出来了。这不是故障是 VSCode 根据文件类型动态调整 UI 的行为。遇到“配置选项消失”的时候先看一眼当前文件类型和界面右下角的语言模式90% 的问题就出在这里。6.2 Keil 里插上 STLink 点 settings 卡住问题不一定在 Keil不要觉得这个热搜词跟 VSCode 无关很多人是从 Keil 转过来用 VSCode 写嵌入式才遇到这个问题的。现象是在 Keil 的调试设置里插上 STLink 之后点 Settings整个 IDE 界面直接卡死。这个问题的根源通常不在 Keil 本身而是驱动或者调试器的固件接口被别的进程占用了。在转用 VSCode 做嵌入式开发时你会遇到 Extension 配置 STLink 调试器的需求比如用 Cortex-Debug 扩展。它会在 launch.json 和 settings.json 里指定调试器的接口和路径{ cortex-debug.armToolchainPath: C:/arm-gnu-toolchain/bin, cortex-debug.JLinkGDBServerPath: C:/Program Files/SEGGER/JLink/JLinkGDBServer.exe, cortex-debug.openocdPath: C:/openocd/bin/openocd.exe }但如果 Keil 那边还占着 STLink 的驱动接口VSCode 这边怎么配置都连不上调试器。排查这个问题的标准动作是拔掉 STLink重新插上看设备管理器里是否识别到了正常驱动STLink dongle 的驱动名字通常是 STMicroelectronics STLink dongle。检查是否安装了最新版 ST-Link 驱动老版本驱动跟 Win10/11 的 USB 电源管理有冲突表现为“插上后设备时好时坏”。关掉 Keil 里其他正在用 STLink 的工程以及可能后台残留的 ST-LINK 进程再打开调试设置。这个问题之所以会被归到 VSCode 相关是因为很多人第一反应是改 VSCode 的配置实际上硬件调试器被占用与否跟 VSCode 无关而是跟底层驱动冲突有关。真正要解决是把驱动层面理顺然后 VSCode 的调试配置才有意义。嵌入式开发里用 VSCode 的本质是把 Keil 的“编辑编译调试”解构成多个工具的组合编辑交给 VSCode编译交给 arm-none-eabi-gcc 或 Keil 的命令行调试交给 OpenOCD 或 JLink配置入口从 IDE 的图形界面转到了 settings.json 和 launch.json 里。刚开始会不习惯但一旦理解了这个分工很多顽固问题反而不容易卡住你——比如 Keil 里一点 Settings 就卡死的场景在 VSCode 里对应的调试配置每一项都是可见可改的文本不会因为 GUI 崩溃而无从下手。7. 最后再分享几个依托 settings 的隐藏技巧写到这里再补充几个我实际用了很久的小技巧全是关于 settings 的高效用法。第一个是配置同步。VSCode 内置的Settings Sync可以同步所有用户级配置、快捷键和已安装插件列表登入 GitHub 或微软账号即可。如果你换电脑新机器装好 VSCode 后登录账号settings.json 会自动拉下来。但注意工作区级配置.vscode/settings.json不在同步范围内它跟着项目走。这个机制其实非常合理用户设置是“我喜欢的编辑器”工作区设置是“这个项目需要的配置”两者分开后跨项目才不串味。第二个是比Ctrl,更好用的配置搜索方法。在 settings.json 里直接CtrlShiftF搜配置名会搜到整个 JSON 文件效率很低更好用的是命令面板输入Preferences: Open Settings (JSON)后直接跳转到你上次编辑的位置或者用CtrlF在 JSON 里搜配置短名。另一个技巧是在图形设置界面里点右上角的“...”菜单有一个“Copy Setting ID”选项复制出来去 JSON 里定位极其方便。第三个是给 settings.json 分区块。前面说过 settings.json 支持注释我建议在文件里用注释把配置分成几大块比如“——编辑器——”“——终端——”“——Python——”“——格式化——”。这样即使配置项有二三十个每次打开也能很快定位。这行注释还会跟着配置一起同步换电脑后一眼就能回忆起当时为什么做了某个决定。第四个是学会使用${workspaceFolder}变量。很多配置项的值是路径比如 includePath、解释器路径、格式化工具路径。硬编码绝对路径会在换目录或换电脑时失效用${workspaceFolder}指代“当前打开项目的根目录”用${env:HOME}指代用户目录配置的移植性会好很多。这是新手最容易忽略、老手一定在用的细节。settings.json 这个东西刚接触时觉得是配置用久了会发现它是 VSCode 所有能力的索引每一个插件、每一项语言服务、每一个远程连接最终都会在配置里找到归宿。与其到处复制网上的片段不如花一个下午把配置文件精简成一套只属于自己的版本——这个过程也是你慢慢理解 VSCode 内部逻辑的过程。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →