Skip to content

VSCode 配置

VSCode 通过配置文件(Profiles)来配置 VSCode 的行为。

配置文件内容

显示配置文件内容: 文件|首选项|配置文件|显示配置文件内容

配置文件(个人资料)视图: 查看|打开视图|个人资料

配置文件包括:

  • 设置: settings.json
  • 键位映射: keybindings.json
  • UI状态: globalState.json
  • VSCode扩展: extensions.json
  • 个人资料: profiles.json
  • 代码片段: [language].json
  • 用户任务: tasks.json

这些配置文件被统一放置在以下路径:

  • Windows: %APPDATA%\Code\User\profiles
  • MacOS: $HOME/Library/Application\ Support/Code/User/profiles
  • Linux: $HOME/.config/Code/User/profiles

如果有多套配置文件,他们以profiles/id的形式保存,而具体特定配置文件的 id 可以在 profiles.json 中查看,profiles.json 是唯一的。

Tips

profiles 被翻译为个人资料,他实际上也是配置文件的意思,多个配置文件会在其中保存 id 信息。

创建配置文件

创建配置文件: 文件|首选项|配置文件|创建配置文件

VSCode 初始状态会包含一个默认配置文件(default)。我们也可以创建新的配置文件来定义不同的工作环境。VSCode 中允许存在多套不同的配置文件。

create_profiles

VSCode 还提供了一些配置文件模版,当我们复制创建配置文件时指定复制开源时可以指定这些模版。

Tips

工作区会记住应用的配置文件,因此通过切换不同的工作区来自动应用不同的配置。

部分配置文件(Partial Profile)

最初Issues 是希望引入配置文件继承,但是可能因为会导致兼容性问题使用了折中的 Partial Profile 机制来实现扁平化的配置文件继承:

  • 选择要在配置文件中配置的内容时不勾选就会继承 default 配置:

partial_profiles_1

Tips

后面小字部分显示 正在使用默认配置文件,即继承关系。

  • 对于设置(settings.json)如果想要在所有配置文件中生效,可以 将设置应用于所有配置文件:

partial_profiles_2

他们最终会在 default 的 settings.json 中的 "workbench.settings.applyToAllProfiles" 属性中定义:

JSON
{
  "workbench.settings.applyToAllProfiles": ["editor.fontSize"],
  "editor.fontSize": 16
}

Tips

为了兼容,引入了 "workbench.settings.applyToAllProfiles" 配置,而不是直接将 "editor.fontSize": 16 放入其中。

  • 对于扩展的继承,可以 将扩展应用于所有配置文件:

partial_profiles_3

Tips

Partial Profile 机制的继承是扁平化的,他们只能继承 default 配置文件。

配置文件同步

打开设置同步: 文件|首选项|设置同步已打开

设置同步视图: 查看|打开视图|设置同步

通常同步能够跨计算机来共享 VSCode 配置。整个同步过程可以在 设置同步 视图中查看:

sync_settings

上面能够显示很多信息:

  • 所有创建的配置文件都会被同步,上面的 python 配置文件因为键位映射继承自 default 因此不在存在
  • 个人资料属于 default 特有的,他里面记录了用户所有的配置文件 id 等信息
  • 他们也保存了整个同步的历史信息,如果同步出现问题可以通过一个节点来恢复配置
  • 已同步的计算中记录了哪些计算机被授权可以同步

配置同步数据

默认情况下有些特定于计算机或特定平台的配置不应该被同步,此时可以通过设置关闭它:

no sync

对应到配置文件中就是:

JSON
{
  "settingsSync.ignoredSettings": ["editor.fontFamily"]
}

对于扩展也同样如此,他们在配置文件中表现是:

JSON
{
  "settingsSync.ignoredExtensions": ["gruntfuggly.todo-tree"]
}

默认情况下,键位映射是按平台同步的,如果你的快捷键于平台无关,则需要通过设置来跨平台同步他们:

JSON
{
  "settingsSync.keybindingsPerPlatform": false
}

清空云同步内容

如果不想要或者需要重构整个配置,可以清空云同步:

clear sync

个人配置

通过将键位映射到 default 配置文件中。而对于特定编程语言的构建自己的配置:

在编写配置文件的时候有一个需要注意,切换配置时已经打开的 settings.json 并不会自动切换,因此注意编辑的文件属于哪个配置文件的。一个好的方法就是在不同的配置文件中添加 // PYTHON 这样注释。

参考