vscode

文章目录

vscode工作空间下有一个.vscode文件夹,该文件夹下放置了vscode的配置文件,主要有:

  • settings.json : vscode的设置,配置IntelliSense
  • task.json : 配置编译选项
  • launch.json : 配置debugger

变量引用

预定义变量
${userHome} - 用户家目录
${workspaceFolder} - vscode打开的文件夹
${workspaceFolderBasename} - vscode打开的文件夹的名字,不包含任何/
${file} - 当前激活文件的绝对路径
${fileWorkspaceFolder} - 当前打开的文件的工作空间文件夹
${relativeFile} - 当前激活文件相对workspaceFolder的相对路径
${relativeFileDirname} - 当前打开的文件相对于workspaceFolder的相对路径
${fileBasename} - 当前激活文件的文件名,带后缀
${fileBasenameNoExtension} - 当前激活文件的文件名,不带后缀
${fileExtname} - 当前激活文件的后缀
${fileDirname} - 当前激活文件所在的文件夹路径,最近一层文件夹
${fileDirnameBasename} - 当前激活文件所在文件夹的名字
${cwd} - VS Code启动时任务运行器的当前工作目录
${lineNumber} - 当前激活文件光标所在的行号
${selectedText} - 在激活状态的文件中所选中的文字
${execPath} - vscode可执行程序的绝对路径
${defaultBuildTask} - the name of the default build task
${pathSeparator} - 文件路径中用来分割各部分的符号 / on macOS or linux, \ on Windows
${env:PATH} - 系统中的环境变量

可以通过${config:Name}引用vscode设置变量,例如:${config:editor.fontSize}

tasks.json中不是所有的值都支持变量替换。具体来说,只有commandargsoptions支持变量替换。在inputs部分的输入变量将不会被解析,因为不支持输入变量嵌套。

检查变量运行时值的一个简单方法是创建一个VS Code任务,将变量值输出到控制台。例如,要查看${workspaceFolder}的解析值,您可以在tasks.json中创建并运行(Terminal > run Task)以下简单的echo任务

json 复制代码
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "echo",
      "type": "shell",
      "command": "echo ${workspaceFolder}"
    }
  ]
}

Multi-selections(multi-cursor)

Alt + Click: 手动添加多光标
Shift + Alt + Down: 将光标插入下方
Shift + Alt + Up: 将光标插入上方
Ctrl + Shift + L: 自动化在每一个所选文本出添加一个光标

Column (box) selection

Shift + Alt+鼠标拖拽

在正则表达式替换中改变大小写

VS Code支持在搜索和替换时更改正则表达式匹配组的大小写,这是通过修饰符\u \U \l \L完成的,其中\u\l将大写/小写单个字符,而\U\L将大写/小写匹配组的其余部分。例如,\u\u\u$1将把匹配组的前三个字符大写,或者\l\U$1将把第一个字符小写,其余字符大写。匹配组由替换字符串中的$n引用,其中n是匹配组的顺序。

tasks.json

json 复制代码
{
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: g++.exe build active file",
      "command": "C:\\msys64\\ucrt64\\bin\\g++.exe",
      "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}\\${fileBasenameNoExtension}.exe"
      ],
      "options": {
        "cwd": "${fileDirname}"
      },
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "Task generated by Debugger."
    },
    {
      "label": "Run tests",
      "type": "shell",
      "command": "./scripts/test.sh",
      "windows": {
        "command": ".\\scripts\\test.cmd"
      },
      "group": "test",
      "presentation": {
        "reveal": "always",
        "panel": "new"
      }
    }
  ]
}
  ],
  "version": "2.0.0"
}
  • label: 是你将会在任务列表中看到的任务名称
  • type: 任务类型,对于自定义任务,可以是shellprocess。如果是shellcommand会被解释为shell命令 (for example: bash, cmd, or PowerShell)。如果是processcommand会被解释为要执行的程序。
  • command: 执行的实际命令,在本例中是g++
  • args数组指定将传递给command的参数。
  • 操作系统特定属性
    • windows: 在Windows操作系统上替换全局作用域定义的默认属性。
    • linux: 在Linux操作系统上替换全局作用域定义的默认属性。
    • osx: 在MacOs操作系统上替换全局作用域定义的默认属性。
  • group: 定义任务属于哪个组。在本例中,任务属于build组,在命令面板中运行Run Build Task会执行属于build组的任务。类似的还有test测试组。
  • detail是任务列表中任务的描述。强烈建议重命名此值,以将其与类似的任务区分开来
  • presentation: 定义如何在用户界面中处理任务输出。在本例中,显示输出的集成终端总是显示出来,并且在每次运行任务时都会创建一个新终端
  • options: Override the defaults for cwd (current working directory), env (environment variables), or shell (default shell). Options can be set per task but also globally or per platform. Environment variables configured here can only be referenced from within your task script or process and will not be resolved if they are part of your args, command, or other task attributes.
  • runOptions: 定义任务何时以及如何运行

play按钮将从tasks.json中读取数据,来获取如何构建和运行程序的信息。您可以在tasks.json中定义多个构建任务。标记为默认值的任务将由play按钮使用。如果需要更改默认编译器,可以在命令面板中运行Tasks: Configure default Build Task或者修改tasks.son文件,并通过替换此段来删除默认值:

json 复制代码
    "group": {
        "kind": "build",
        "isDefault": true
    },

替换为

json 复制代码
    "group": "build",

第一个任务告诉g++获取活动文件${file},编译它,并在当前目录${fileDirname}中创建一个可执行文件,该文件的名称与活动文件相同,但扩展名为.exe (${fileBasenameNoExtension}.exe)。

launch.json

json 复制代码
{
  "configurations": [
    {
      "name": "C/C++: g++.exe build and debug active file",
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${fileDirname}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        },
        {
          "description": "Set Disassembly Flavor to Intel",
          "text": "-gdb-set disassembly-flavor intel",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "C/C++: g++.exe build active file"
    }
  ],
  "version": "2.0.0"
}

program指定要调试的程序
args属性是一个在运行时传递给程序的参数数组
stopAtEntry等于true会在main函数暂停

相关推荐
山峰哥13 天前
吃透 SQL 优化:告别慢查询,解锁数据库高性能
服务器·数据库·sql·oracle·性能优化·编辑器
Diligently_13 天前
idea 中vm option 配置
java·ide·intellij-idea
holeer13 天前
【V1.0】Typora 中的 HTML 支持|软件文档自翻译
前端·编辑器·html·typora·web·markdown·文档
我命由我1234513 天前
在 Android Studio 中,新建 AIDL 文件按钮是灰色
android·ide·android studio·安卓·android jetpack·android-studio·android runtime
硬汉嵌入式13 天前
Vim 9.2版本正式发布
编辑器·vim
Hello World . .13 天前
Linux:线程间通信
linux·开发语言·vscode
AC赳赳老秦13 天前
云原生AI故障排查新趋势:利用DeepSeek实现高效定位部署报错与性能瓶颈
ide·人工智能·python·云原生·prometheus·ai-native·deepseek
被制作时长两年半的个人练习生13 天前
claude code for vscode 配置 qwen3.5
ide·vscode·claude code·qwen3.5
圣心13 天前
Visual Studio Code 中的 AI 智能操作
ide·人工智能·vscode
吹牛不交税13 天前
关于vscode左侧资源管理器目录层级疑似异常的问题
ide·vscode·编辑器