[SOP1.1]设置VScode全局的settings.json
[SOP1.1]设置VScode全局的settings.json
重要
settings.json可以配置好多重要的,比如这3类
- 鼠标控制vscode表现,vscode的tab和空格
- 配置插件的具体参数,比如code runner
- 配置LSP(语言服务器协议)去使得vscode补全具体语言【VS Code 本身只是 LSP 客户端】
- 真正的 LSP 功能通常由语言扩展提供
以下的都会直接作用到本地+远程!
默认情况下,本地的 用户设置【settings.json】 会被带到远程 VSCode 进程中作为 默认值,但远程修改的配置只会保存在远程。
- 全局的settings.json
- 全局的keybindings.json
- 全局的tasks.json
- 比如,如果你在远程 VSCode 中修改了快捷键,它只会保存到 远程
~/.vscode-server/data/User****/keybindings.json
【必备】全局的settings.json
- 快捷键是
cmd+,然后你可以可视化的去编辑
{
// 【1部分】
// 配置1: 默认字体
"editor.fontSize": 16,
// 配置2:
"extensions.closeExtensionDetailsOnViewChange": true,
// 配置3:使用鼠标控制大小
"editor.mouseWheelZoom": true, // 比如:鼠标控制大小
// 配置4:显示 80、120 列参考线(帮助控制行宽)
"editor.rulers": [
80,
120
],
// 光标闪烁方式, 好像默认的也是这样
"editor.cursorBlinking": "smooth",
// 配置5:光标平滑移动---反正就是特别好看,但是我感觉不太好,可能搞自媒体比较好
// "editor.cursorSmoothCaretAnimation": "on",
// 配置6:启用右侧的minimap 代码缩略图
"editor.minimap.enabled": true,
// 配置7: 有关括号的那个高亮下划线
"editor.guides.bracketPairs": true,
// 配置8:这是 VS Code 里 终端(Terminal)启动时的工作目录设置。
// "${fileDirname}" 是一个 VS Code 变量,代表:当前打开的文件所在的文件夹路径。
"terminal.integrated.cwd": "${fileDirname}",
// 【2部分】
// 配置7:Tab 转换为 4 个空格(前端和Python常用)、Python 官方推荐Tab自动改为空格缩进 4
"editor.tabSize": 4,
// 配置8和配置7基本上一起的:
// 按 Tab 时统一替换成空格是否开启
// 如果开启了,你使用awk -F '\t' '{print NF}'会有影响
"editor.insertSpaces": true,
// 针对配置8引入的问题,解决方案是
// 针对不同文件类型区分配置
// 默认用空格(适合 Python 等语言)
// "editor.insertSpaces": true,
// 针对 TSV、Makefile 等文件保留 Tab
// ========== 特例:Go 语言(官方要求用 Tab) ==========
"[go]": {
"editor.insertSpaces": false,
"editor.tabSize": 4
},
// ========== 特例:Java(很多团队习惯保留 Tab) ==========
"[java]": {
"editor.insertSpaces": false,
"editor.tabSize": 4
},
// ========== 特例:文本文件,方便 awk 处理 ==========
"[plaintext]": {
"editor.insertSpaces": false,
"editor.tabSize": 4
},
// ========== 特例:CSV 文件,必须保留 Tab 作为分隔符 ==========
"[csv]": {
"editor.insertSpaces": false,
"editor.tabSize": 4
},
// ========== 可选:Makefile 也必须用 Tab ==========
"[makefile]": {
"editor.insertSpaces": false,
"editor.tabSize": 4
},
// =======sql使用空格====
"[sql]": {
"editor.insertSpaces": true,
"editor.tabSize": 4
},
// ### python的4个空格,需要
// - insertSpaces: true → 输入 Tab 时自动插入空格。
// - detectIndentation: false → 禁止 VS Code 根据文件内容自动覆盖缩进规则。
//
"[python]": {
"editor.insertSpaces": true,
"editor.tabSize": 4,
"editor.detectIndentation": false
},
// 配置9:是为了显示不可见字符(方便看清 Tab 和空格)
// 比如->是tab键,而·是空格的意思
"editor.renderWhitespace": "all",
}1、配置详解
编辑器显示和控制部分
配置7的效果
关于你使用tab要不要转换为空格,转为几个空格
会影响python、go的格式化
会影响awk某个你新建的txt文件的格式
语言相关-python的
{
// 备注1、Python 必须用一致的缩进,不允许混用 Tab 和空格。
// 备注2、官方 PEP 8 推荐:4 个空格缩进。
// 语言相关配置
// Python 使用 Black 格式化、Black 是 Python 官方推荐的 代码自动格式化工具
// 安装后可以统一风格(缩进 4 空格、单引号/双引号统一等)
// 它本身是一个 命令行工具,不是 VS Code 插件
// "python.formatting.provider": "black"
}2、配置全局插件的配置
python默认格式化-借助插件black-formatter
"[python]": {
// 使用vscode的一个插件来格式化,其实等价于black
"editor.defaultFormatter": "ms-python.black-formatter"
}否则你可能要在2个插件【ms-python.python和ms-python.black-formatter】中打架
3、在settings.json配置LSP
- LSP(语言服务器协议)
Language Server Protocol (LSP),语言服务器协议
在编辑器或 IDE 中为编程语言支持丰富的编辑功能(如源代码自动完成或转到定义)在传统上非常具有挑战性且耗时。 通常需要采用编辑器或 IDE 的编程语言编写域模型(扫描程序、分析程序、类型检查器、生成器等)。
语言服务器协议 (LSP) 是对开发工具与语言服务器进程之间交换的消息进行标准化的产物。 使用语言服务器或守护程序不是一个全新或新颖的想法。
Vim 和 Emacs 等编辑器已经这样做了一段时间,来提供语义自动完成支持。 LSP 的目标是简化此类集成,并提供一个有用框架,向各种工具公开语言功能。
Python的LSP
| LSP 实现 | 包名 / 二进制 | 备注 |
| Pylance | 内置(闭源) | 默认推荐,最强性能 |
| Pyright | npm install -g pyright | Pylance 的开源核心 |
| Jedi | Python 内置 (pip install jedi) | 旧方案,慢且不推荐 |
{
// 使用 Pylance 作为语言服务器
"python.languageServer": "Pylance",
"python.analysis.typeCheckingMode": "basic",
"python.analysis.autoImportCompletions": true,
// 格式化设置
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.formatOnSave": true
},
// 代码提示与智能分析
"python.analysis.diagnosticMode": "openFilesOnly",
"python.analysis.useLibraryCodeForTypes": true
}上面是VS Code 中针对 Python 的 settings.json 配置,主要控制 LSP(语言服务器)、类型检查、格式化和自动补全。Go 和 PHP 的 LSP 配置逻辑类似,但插件和语言服务器不同。
Go
推荐插件:核心是启用 gopls,然后可以配置诊断和格式化选项。
golang.go(官方插件)- 内置 LSP:
gopls
settings.json
{
// Go语言服务器
"go.useLanguageServer": true,
"go.languageServerExperimentalFeatures": {
"format": true,
"diagnostics": true,
"documentLink": true
},
// LSP配置
"gopls": {
"usePlaceholders": true, // 自动生成占位符
"staticcheck": true, // 启用更严格的静态检查
"analyses": {
"unusedparams": true,
"nilness": true
}
},
// 格式化设置
"[go]": {
"editor.defaultFormatter": "golang.go",
"editor.formatOnSave": true
},
// 自动补全
"go.autocompleteUnimportedPackages": true
}PHP
推荐插件
felixfbecker.php-intellisense(LSP)- 或官方 PHP 插件
PHP Intelephense
以 Intelephense 为例的settings.json
注意:PHP LSP 默认使用 Intelephense,如果使用 php-language-server 或其他 LSP,字段会略有差异。
{
// 启用 Intelephense 作为 PHP LSP
"php.validate.enable": true,
"php.suggest.basic": false, // 避免和 LSP 冲突
"intelephense.files.maxSize": 5000000, // 最大文件大小
"intelephense.environment.phpVersion": "8.2",
// 格式化
"[php]": {
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client",
"editor.formatOnSave": true
},
// 自动补全和分析
"intelephense.completion.insertUseDeclaration": true,
"intelephense.diagnostics.undefinedFunctions": true,
"intelephense.diagnostics.undefinedConstants": true
}附录
| 语言 | LSP 插件 | 核心配置项 | 格式化 |
| Python | Pylance | python.analysis.* | black |
| Go | gopls | gopls.* | go fmt/goimports |
| PHP | Intelephense | intelephense.* | 插件自带 |