1、快捷键

打开快捷键面板:在 Windows 或 Linux 上按下 Ctrl + K 然后紧接着按下 Ctrl + S 。在 macOS 上则是 Cmd + K 然后 Cmd + S。

(1)打开命令面板

按下F1(有些笔记本需要FN+F1) 或 Ctrl+Shift+P
在命令面板中输入命令,可以快速执行各种操作,如打开文件、运行任务等。

(2)注释

单行注释:ctrl + /
多行注释:alt + shift + A

(3)删除行

删除一行:ctrl +D【这个快捷键是我自定义的】
自定义的步骤:VScode配置快捷键

step1:
打开快捷键面板,具体操作:
按下 Ctrl + K 然后再按 Ctrl + S(适用于 Windows 和 Linux)。
对于 macOS 用户,可以使用 ⌘ + K 然后 ⌘ + S。
step2:
搜索要修改的命令,点击该命令所在行首的编辑按钮(小铅笔),键盘按下想要修改后的快捷键,即可自动修改。

(4)上下移动光标

移动行:alt + upArrow/downArrow

(5)光标回退

回退到上一步:alt + leftArrow

(6)复制行

向上复制:alt + shift + upArrow
向下复制:alt + shift + downArrow

(7)插入空白行

向上插一行:ctrl + shift + enter
向下插一行:ctrl + enter

(8)代码、注释区折叠

第一种:批量

代码折叠:先ctrl + k,松开后再ctrl + 数字0
代码展开:先ctrl + k,松开后再ctrl + J

  • 注意1:这2个快捷键是作用在当前py文件的所有内容上的(暂称为:批量操作)。
  • 注意2:对于注释代码,如果之前没有执行过折叠,以上命令不生效。
    解决办法:先把注释区的注释放开,再执行代码折叠,然后再恢复之前的注释状态。此后再执行以上2个快捷命令,对注释区也是生效的啦。
第二种:分区

仅【折叠/展开】光标所在行及以下区域:先ctrl + k,松开后再ctrl + L

  • 注意1:这个快捷键是2个功能共用。
  • 注意2:和上面的批量折叠、展开一样,注释区需要先放开,再使用快捷键,最后再恢复注释状态。

(9)页面缩放

页面缩放:ctrl + 减号/加号

(10)快速打开全局设置

快速打开全局设置:ctrl + 英文逗号

(11)注释快捷键

如果已经安装了koroFileHeader扩展,并配置了注释模版(具体可见 ##4、title模版配置):
(1)文件头部注释快捷键:

window:ctrl+win+i
mac:ctrl+cmd+i
linux: ctrl+meta+i Ubuntu:
ctrl+super+i

(2)函数注释注释快捷键:

window:ctrl+win+t
mac:ctrl+cmd+t
linux: ctrl+meta+t, Ubuntu:
ctrl+super+t

(12)切换自动换行

on:根据编辑器视口宽度自适应。当你拖拽调整窗口大小时,换行位置会实时变化。
off:不自动换行,出现水平滚动条。

ALT + Z

快捷键在关闭文件再次重新打开后是失效的,需要再次使用快捷键使其换行显示。想要一劳永逸的,可以在设置中配置:
在这里插入图片描述

2、使用方法

总览图

在这里插入图片描述

2.1 使用vscode 新建工程

  • 工具栏file -> new file(在给文件命名时,文件类型也要自己补充完整)
  • 对命名框enter后,会弹出文件系统,选择或新建一个文件夹。
    文件夹用途:用来保存当前新建的文件,这个文件夹也是当前要创建的工程夹。
  • ctrl+s 保存当前文件 ;
  • 工具栏file -> add folder to workplace
    意思:把当前文件夹添加到vscode 的 workplace。

这样当前workplace下就展示的是当前工程啦~

2.2 在vscode的同一个workplace里展示多个工程

  • 先在workplace里打开一个工程A
  • 再执行file -> add folder to workplace ;
  • 选择待添加的工程B ;
  • END!

这样就可以看到,当前workplace下同时存在A和B两个工程!

2.3 文件夹.vscode及其下的settings.json文件怎么配?

(1)文件夹.vscode的位置

文件夹.vscode用户自己创建的,可以放在任意目录下,但放的位置不同作用范围也不同
通常,.vscode/setting.json作用范围.vscode一级父目录下所有文件夹及文件。
更上层的父目录可以通过再重新创建个.vscode文件夹并添加自己的个性化配置。
如果是整个工作区要使用同一配置,就要把.vscode挪到顶级父目录下。

(2)settings.json

  • 文件内容:用户自定义的一些配置。可以自定义的内容范围可以自行在网上找案例学习。
  • 文件位置:放在.vscode根目录下。
  • 示例:
{
    "python.analysis.extraPaths": [
        "${workspaceFolder}",
        "${workspaceFolder}/real_time_compliance_quality_inspection",
        "${workspaceFolder}/trace_detection"
    ],
    // 2026/8/10 添加
    "python.analysis.diagnosticSeverityOverrides": {
        "reportMissingImports": "warning", // 导入了不存在的模块(最常见、关键的错误)
        "reportOptionalOperand": "none", // 对可能为 None 的对象做算术操作(如 None + 1)
        "reportOptionalIterable": "none", // 对可能为 None 的对象做迭代操作(如 for x in None)   
        "reportUndefinedVariable": "warning", // 使用了未定义的变量(最常见、关键的错误)          
    },
    // "python-envs.defaultEnvManager": "ms-python.python:conda",
    // "python-envs.defaultPackageManager": "ms-python.python:conda"
}

(3) launch.json

  • 定义一些自定义的配置
  • 示例:
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "NotJustMyCode", # 当前应用名字,随便写
            "type": "debugpy", # 调试模式
            "request": "launch",
            "program": "${file}",  # 当前运行的.py脚本
            "console": "integratedTerminal",
            "justMyCode": false,  # 指定断点调式时,非自己写的代码(如第三方包)也要参与断点调试。
            "args": []
        },
        {
            "name": "api-production",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": false,
            "args": [ 
                "--mode",  # 指定脚本运行参数
                "production"
            ]
        },
        {
            "name": "app-production",
            "type": "debugpy",
            "request": "launch",
            "module":"streamlit",
            "console": "integratedTerminal",
            "justMyCode": false,
            "args": [
                "run",
                "${file}",
                "--server.port",
                "8002",
                "--",  # 单独一行,标识一个特殊的标记,用于分隔传递给 streamlit run 命令的参数和传递给脚本的参数。
                "--mode",
                "production"
            ]
        }
    ]
}

2.4 在vscode中,怎么在同一workplace同时运行多个.py进程?

在vscode中,同时run不同文件时,同一终端如果已经被占用就会导致其他文件无法使用,所以会出现文件无法运行的情况。

解决办法

右上角:点击“运行”按钮 -> 选择“在专用终端中运行python文件”
这样就会在【编辑区的底部右侧】 -> 终端栏 -> 看到每个py文件的运行都会启动不同的终端,并且互不影响。

  • step1: 选择启动方式
    在这里插入图片描述
  • step2: 查看不同终端
    在这里插入图片描述

2.5 vscode在调试时,一键切换断点启用状态

  • 方法一:左下角 “断点” -> 鼠标悬浮,会出现切换激活断点按钮,点击即可一键切换。 【左上角,可以看到局部Locals 和 全局变量Globals
    在这里插入图片描述
  • 方法二:工具栏:运行 -> 禁用所有断点

2.6 vscode的文件读取路径怎么写?

可以使用相对路径,也可以使用绝对路径。推荐绝对路径。如下:

# 获取当前脚本的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 构建manual_qa.txt的绝对路径
data_path = os.path.join(script_dir, 'manual_qa.txt')

在这里插入图片描述

使用相对路径时,注意以下问题:

使用相对路径读取文件时,必须跟终端执行命令时的工作目录保持匹配,非则报文件不存在错误
详见总览图中的示例

2.7 vscode同一编辑区同时打开文件不被覆盖

问题描述:
默认vscode好像只能同时打开4个文件,打开第5个文件时,会把当前激活窗口下的文件给覆盖成第5个文件。

解决方案:

在vscode 的 “设置” 中,直接搜索Enable Preview,找到编辑管理里的Enable Preview,去掉这个选项的勾选。具体的操作如下所示:
在这里插入图片描述

2.8 如何使终端输出的不同内容呈现不同颜色?

问题描述:
vscode不像pycharm那样,如果运行报错,vscode的控制台或终端不会使用不同的颜色着重提醒(是统一的黑色),这样排查问题时就要很费力的去找哪些是关键报错信息。

解决方案:
参考:美化VScode终端(报错信息用不同颜色区分)

在你要使用的python环境安装包下 PythonXY\Lib\site-packages(Anaconda位置为envs/XX/PythonXY/site-packages)中添加sitecustomize.py,内容如下:

import sys
from IPython.core.ultratb import ColorTB
 
sys.excepthook = ColorTB()

说明:
如果本地安装了多个python环境,就要在 用vscode打开的项目 所使用的 python安装包下操作。
比如,vscode打开的项目A,目前想使用环境1,那就要在环境1下添加sitecustomize.py 文件,如果想切到环境2,那就要在环境2下也添加sitecustomize.py 文件。

3、vscode的ssh免密连接远程机

参考:【VSCode】配置免密SSH登录远程服务器
说明:

  • 如果多人ssh同一台远程机,那远程机上只用执行一次ssh-keygen! 多次执行会把前面生成的key覆盖掉;如果已经有人使用了这个key进行免密,那多次执行会导致前面已经免密的可能就连不上了。
  • 多人同时连,只需把每个人客户端的id_rsa.pub的内容复制并追加到远程机的xx/.ssh/authorized_keys文件里。

4、vscode全局setting模版配置

包括但不限于以下配置:
(1)不同类型的错误提示
(2)文件的头部、函数的注释等
参考:koroFileHeader快速上手:头部注释模板与函数注释模板
(3)代码格式化工具
(4)ssh远程机

{
    "python.analysis.typeCheckingMode": "basic", // 基本校验,默认diagnosticSeverityOverrides下未配置为 none 的都会校验。
    "python.analysis.diagnosticSeverityOverrides": {
        // "reportUndefinedVariable": "error", // 使用了未定义的变量(最常见、关键的错误)
        // "reportFunctionMemberAccess": "error", // 调用函数成员时,成员可能不存在或类型不匹配
        "reportOptionalMemberAccess": "none", // 对可能为 None 的对象调用属性或方法(如 obj?.attr 的安全性)
        "reportOptionalSubscript": "none", // 对可能为 None 的对象做下标操作(如 None['x'])
        // "reportOptionalCall": "warning", // 对可能为 None 的对象调用函数(如 None()"reportReturnType": "none", // 函数返回值与声明的类型不符
        "reportOperatorIssue": "none", // 运算符应用错误(如 str + int)
        // "reportUnnecessaryIsInstance": "error", // isinstance() 总是 True 或 False 的用法是多余的
        // "reportUntypedFunctionDecorator": "error", // 函数装饰器没有类型信息或影响了类型推断
        // "reportUnboundVariable": "error", // 使用了尚未赋值的局部变量
        // "reportMissingImports": "error", // 无法导入模块
        // 完全屏蔽类型相关提示
        "reportGeneralTypeIssues": "none", // 一般类型问题,笼统的类型错误
        "reportArgumentType": "none", // 调用函数时传入了错误类型的参数[这个校验太严格了,不适用]
        "reportAssignmentType": "none", // 给变量赋值时,赋了不兼容的类型[这个校验太严格了,不适用]
        "reportUnknownParameterType": "none", // 函数参数没有类型注解
        "reportUnknownArgumentType": "none", // 实参类型未知
        "reportUnknownLambdaType": "none", // lambda 表达式的参数或返回值类型不明确
        "reportUnknownVariableType": "none", // 变量的类型无法确定
        "reportUnknownMemberType": "none", // 类的成员类型未知
        "reportMissingTypeStubs": "none", // 缺失第三方库的类型 stub 文件
        "reportUnnecessaryTypeIgnoreComment": "none", // 有 # type: ignore 注释但并无报错,提示注释冗余
        // 其他非类型类提示也可以按需关闭
        "reportUnusedImport": "none", // 导入了模块/名称,但未使用
        "reportUnusedVariable": "none", // 定义了变量但未使用(如临时变量、参数等)
        "reportPrivateImportUsage": "none", // 导入了“私有”模块或变量(以 _ 开头的模块名)
        "reportCallIssue": "none", // 调用异常[这个校验太严格了,不适用], 比如对象有默认值可以不用传,放开这个校验会报错
        "reportIndexIssue": "none", // 对不支持下标访问的对象使用 []
        "reportInvalidStringEscapeSequence": "none", // 字符串中存在非法的转义序列
        "reportAttributeAccessIssue": "information" // 访问对象不存在的属性或方法。这个静态校验非常严苛,大部分地方虽然警示有问题,但实际运行是没有问题的。少部分代码是真有问题。所以为了兼容,这里先用information提示,而不是用none全部忽略。
    },
    "security.workspace.trust.untrustedFiles": "open",
    // 头部注释
    "fileheader.customMade": {
        // Author字段是文件的创建者 可以在specialOptions中更改特殊属性
        // 公司项目和个人项目可以配置不同的用户名与邮箱 搜索: gitconfig includeIf  比如: https://ayase.moe/2021/03/09/customized-git-config/
        // 自动提取当前git config中的: 用户名、邮箱
        "Author": "cf", // 同时获取用户名与邮箱
        // "Author": "git config user.name", // 仅获取用户名
        // "Author": "git config user.email", // 仅获取邮箱
        // "Author": "OBKoro1", // 写死的固定值 不从git config中获取
        "Date": "Do not edit", // 文件创建时间(不变)
        // LastEditors、LastEditTime、FilePath将会自动更新 如果觉得时间更新的太频繁可以使用throttleTime(默认为1分钟)配置更改更新时间。
        "LastEditors": "cf", // 文件最后编辑者 与Author字段一致
        // 由于编辑文件就会变更最后编辑时间,多人协作中合并的时候会导致merge
        // 可以将时间颗粒度改为周、或者月,这样冲突就减少很多。搜索变更时间格式: dateFormat
        "LastEditTime": "Do not edit", // 文件最后编辑时间
        // 输出相对路径,类似: /文件夹名称/src/index.js
        "FilePath": "Do not edit", // 文件在项目中的相对路径 自动更新
        // 插件会自动将光标移动到Description选项中 方便输入 Description字段可以在specialOptions更改
        "Description": "", // 介绍文件的作用、文件的入参、出参。
    },
    // 函数注释
    "fileheader.cursorMode": {
        "description": "", // 函数注释生成之后,光标移动到这里
        "param": "", // param 开启函数参数自动提取 需要将光标放在函数行或者函数上方的空白行
        "return": "",
    },
    "fileheader.configObj": {
        "autoAdd": true,
        "functionWideAdd": true,
    },
    // ssh远程机
    "remote.SSH.remotePlatform": {
        "4090卡": "linux"
    },
    "workbench.colorTheme": "Default Light+",
    "workbench.editor.enablePreview": false,
    "editor.minimap.enabled": false,
    "Codegeex.Privacy": false,
    "workbench.editorAssociations": {
        "*.xlsx": "default"
    },
    "python.createEnvironment.trigger": "off",
    "python.analysis.diagnosticMode": "workspace",
    "editor.fontLigatures": false,
    "git.enableSmartCommit": true,
    "git.confirmSync": false,
    "git.ignoreLegacyWarning": true,
    "editor.fontSize": 16,
    "editor.formatOnSave": true,
    "notebook.formatOnSave.enabled": true,
    "files.autoSaveWorkspaceFilesOnly": true,
    // 代码格式化扩展器Black Formatter
    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter",
        "editor.formatOnSave": true
    },
     // 护眼色
    "workbench.colorCustomizations": {
        "editor.background": "#C7EDCC",
        "editorGutter.background": "#C7EDCC",
        "editor.lineHighlightBackground": "#B8E6BE",
        "editorLineNumber.foreground": "#5A7A5A"
    }
}

5、在不同的窗口打开同一个文件夹

参考:vscode 怎么在两个窗口打开同一个项目
默认情况下,vscode已经打开了文件夹A,新建窗口再次要求打开文件夹A时,默认是跳到已经打开的那个窗口,而不会在新窗口里再次打开。

解决思路
step1:先对已经打开文件夹A的窗口执行工作区的保存,这时左侧目录title多了“工作区”3个字;
step2:再打开1个新窗口,这时在这个新窗口里就可以同时打开同一个文件夹A了。左侧目录title仅项目名称。

可以看到:
在这里插入图片描述
[

6、vscode常用插件

vscode常用插件
如果vscode中已安装Chinese (Simplified)汉化插件,但无效,解决方法:

组合按键 Ctrl+Shift+P ,输入框中填入 : configure display language ,再下拉框中选择中文简体

在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐