首页 > 编程语言 >适用于多语言的VScode配置教程:同一文件夹内支持C++, JAVA, Python

适用于多语言的VScode配置教程:同一文件夹内支持C++, JAVA, Python

时间:2024-08-28 11:26:27浏览次数:11  
标签:JAVA VScode type 配置 C++ Python command false true

前言

VScode作为一款强大的文本编辑器,只要配置恰当,便可以同时在一个环境内编译多种语言的文件。本文简要给出一种同时支持C++, Python, Java的配置方式(windows平台)。

配置格式

1.创建工作区并建立如图的文件夹及文件结构


其中包括vscode的配置文件夹.vscode, 以及其他三个代码文件夹(包括存储编译后exe文件的bin子文件夹)

2.写入配置文件

.vscode\launch.json

{
    "version": "0.2.0",
    "configurations": [
        {// C++ 调试配置
            "name": "Debug C++", // 配置名称,可以任意修改,用于在调试配置列表中识别此配置
            "type": "cppdbg", // 配置类型,C++调试器类型。cppdbg 是 VS Code 提供的用于 C++ 的调试类型
            "request": "launch", // 请求配置类型,可以为 "launch"(启动新进程)或 "attach"(附加到已运行的进程)
            "program": "${fileDirname}/bin/${fileBasenameNoExtension}.exe", // 将要调试的程序路径,${fileDirname} 是文件目录,${fileBasenameNoExtension} 是不带扩展名的文件名
            "args": [], // 调试时传递的命令行参数,可以添加例如 ["arg1", "arg2"]
            "stopAtEntry": false, // 是否在程序入口处暂停,可以为 true 或 false
            "cwd": "${fileDirname}", // 调试时的工作目录,可以为项目根目录或其他指定目录
            "environment": [], // 环境变量,可以添加例如 [{"name": "ENV_VAR", "value": "value"}]
            "externalConsole": false, // 是否使用外部控制台,可以为 true 或 false。true 使用独立终端,false 使用内置终端
            "internalConsoleOptions": "neverOpen", // 内置控制台选项,可以为 "neverOpen"(从不打开), "openOnSessionStart"(会话开始时打开), "openOnFirstSessionStart"(第一次会话开始时打开)
            "MIMode": "gdb", // 调试器类型,可以为 "gdb" 或 "lldb"
            "miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe", // 调试器路径,指定调试器可执行文件的位置
            "preLaunchTask": "build C++", // 调试前执行的任务,与 tasks.json 中的 label 对应
            "setupCommands": [
                {
                    "text": "-interpreter-exec console \"skip -gfi **/bits/*.h\"" // 设置调试时跳过标准库文件
                }
            ]
        },
        {// Python 调试配置
            "name": "Debug Python", // 配置名称,可以任意修改
            "type": "debugpy", // 配置类型,Python 调试器类型。需要安装 Python 扩展
            "request": "launch", // 请求配置类型,启动新进程
            "program": "${file}", // 调试的 Python 程序,${file} 表示当前打开的文件
            "console": "integratedTerminal" // 使用集成终端,可以为 "integratedTerminal" 或 "externalTerminal"
        },
        {// Java 调试配置
            "name": "Debug Java", // 配置名称,可以任意修改
            "type": "java", // 配置类型,Java 调试器类型。需要安装 Java 扩展
            "request": "launch", // 请求配置类型,启动新进程
            "mainClass": "${fileBasenameNoExtension}", // 主类,${fileBasenameNoExtension} 表示不带扩展名的文件名
            "console": "integratedTerminal" // 使用集成终端,可以为 "integratedTerminal" 或 "externalTerminal"
        }
    ]
}

.vscode\tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "clr",
            "type": "shell",
            "command": "cls",
            "problemMatcher": []
        },
        {
            "dependsOn": "clr",
            "label": "build C++",
            "type": "shell",
            "command": "g++",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/bin/${fileBasenameNoExtension}.exe",
                "-g",
                "-Wall",
                "-static-libgcc",
                "-fexec-charset=UTF-8",
                "-std=c++11"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "new"
            },
            "problemMatcher": "$gcc"
        },
        {
            "label": "run C++",
            "dependsOn": "build C++",
            "type": "shell",
            "command": "${fileDirname}/bin/${fileBasenameNoExtension}.exe",
            "group": {
                "kind": "test",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true,
                "panel": "new"
            },
            "problemMatcher": []
        },
        {
            "label": "debug C++",
            "type": "shell",
            "command": "code",
            "args": [
                "-g",
                "${workspaceFolder}/${relativeFile}"
            ],
            "group": {
                "kind": "build",
                "isDefault": false
            },
            "problemMatcher": [],
            "dependsOn": "build C++"
        },
        {
            "label": "run Python",
            "type": "shell",
            "command": "python",
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "test",
                "isDefault": false
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true,
                "panel": "shared"
            },
            "problemMatcher": []
        },
        {
            "label": "debug Python",
            "type": "shell",
            "command": "code",
            "args": [
                "-g",
                "${workspaceFolder}/${relativeFile}"
            ],
            "group": {
                "kind": "build",
                "isDefault": false
            },
            "problemMatcher": []
        },
        {
            "label": "build Java",
            "type": "shell",
            "command": "javac",
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "test",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            },
            "problemMatcher": {
                "owner": "java",
                "fileLocation": [
                    "relative",
                    "${fileDirname}"
                ],
                "pattern": [
                    {
                        "regexp": "^(.*)$",
                        "message": 1
                    },
                    {
                        "regexp": "^\\s*at .+\\((.+):([0-9]+)\\)$",
                        "file": 1,
                        "line": 2
                    }
                ]
            }
        },
        {
            "label": "run Java",
            "dependsOn": "build Java",
            "type": "shell",
            "command": "java",
            "args": [
                "${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "group": {
                "kind": "test",
                "isDefault": false
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true,
                "panel": "shared"
            },
            "problemMatcher": []
        },
        {
            "label": "debug Java",
            "dependsOn": "build Java",
            "type": "shell",
            "command": "code",
            "args": [
                "-g",
                "${workspaceFolder}/${relativeFile}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "group": {
                "kind": "build",
                "isDefault": false
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true,
                "panel": "shared"
            },
            "problemMatcher": []
        }
    ]
}

快捷键配置文件副本:.vscode\keybindings.json.save

[
    {
        "key": "ctrl+f5",
        "command": "workbench.action.tasks.runTask",
        "args": "run C++",
        "when": "resourceExtname == .cpp"
    },
    {
        "key": "ctrl+f5",
        "command": "workbench.action.tasks.runTask",
        "args": "run Python",
        "when": "resourceLangId == python"
    },
    {
        "key": "ctrl+f5",
        "command": "workbench.action.tasks.runTask",
        "args": "run Java",
        "when": "resourceLangId == java"
    },
    {
        "key": "f5",
        "command": "workbench.action.debug.selectandstart",
        "when": "resourceExtname == .cpp"
    },
    {
        "key": "f5",
        "command": "workbench.action.debug.selectandstart",
        "when": "resourceLangId == python"
    },
    {
        "key": "f5",
        "command": "workbench.action.debug.selectandstart",
        "when": "resourceLangId == java"
    },
    {
        "key": "f5",
        "command": "-workbench.action.debug.continue",
        "when": "debugState == 'stopped'"
    }
]

3.配置快捷键

点按ctrl+k+s打开键盘快捷方式的配置界面

从配置界面的右上角点选按钮:打开键盘快捷方式(json)

将刚才的keybindings.json.save中的内容加入到全局的keybindings.json中,若之前未配置过可选择直接替换。

此时即可使用ctrl+F5进行快速编译运行c++,python,java任一语言,F5后选择对应语言的调试运行方式

(这是由于调试运行任务,vscode的command接口只有workbench.action.debug.selectandstart,无法直接选择运行,如有能够直接针对后缀名进行调试的方法,烦请评论告知)

至此配置完毕。

标签:JAVA,VScode,type,配置,C++,Python,command,false,true
From: https://www.cnblogs.com/AyeeMinerva/p/18384292

相关文章

  • 安装python教程详解-(Linux和Windows11安装python)
    一、Linux编译安装Python3.12.5python官网地址:WelcometoPython.org1.1安装python环境1.1.1安装开发工具包和依赖#yum-ygroupinstall"DevelopmentTools" #yum-yinstallgcczlibzlib-devellibffilibffi-develreadline-developenssl-developenssl11ope......
  • 在低显存GPU上运行PixArt-Σ/Flux.1图像生成:Python简短教程
    由PixArt-Σ在本地生成,所需显存不超过8Gb。图像生成工具的热度从未如此高涨,而且它们也变得越来越强大。像PixArtSigma和Flux.1这样的模型处于领先地位,这得益于它们的开源权重模型和宽松的许可协议。这种设置允许进行创造性的尝试,包括在不共享计算机外部数据的情况下训练LoRA......
  • java导出内存dump
    使用jhsdb的步骤1.查找进程ID(PID)首先,你需要获取目标Java进程的PID。如果你已经有了PID,就可以跳过这一步。如果没有,可以使用以下命令来查找:jps-l2.使用jhsdb查看堆信息例如,如果你的Java进程PID是2364,你可以使用以下命令来查看堆信息:jhsdbjmap--heap--pid2364......
  • Python系列(10)- Python 多线程
    多线程(Multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的系统包括对称多处理机、多核心处理器、芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程是并行化......
  • 基于java的SpringBoot框架卫生健康系统
    博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、爬虫、web开发,已经做了六年的程序开发,开发过上千套大学生实战程序,可以定制、也可成品项目,博客中有上百套程序可供参考,欢迎共同交流学习。......
  • 3. JavaScript 变量声明
    var、let和const是JavaScript中用于声明变量的关键字,但它们在作用域、提升(hoisting)、以及是否可以重新赋值等方面存在一些重要的区别。1.作用域(Scope)var:具有函数作用域(functionscope),即如果在函数内部声明var变量,该变量在整个函数内都有效。如果在函数外部声明,则具......
  • Java研学-Shiro安全框架(五)
    七SpringBoot集成Shiro鉴权1Shiro鉴权三种方式  编程式通过写if/else授权代码块完成Subjectsubject=SecurityUtils.getSubject();if(subject.hasRole("hr")){ //有权限}else{ //无权限}  注解式通过在controller的方法上放置相应的注解完成(shiro......
  • VSCode + EIDE开发记录
    环境:Win10,VSCode+EmbeddedIDE扩展,使用Cortex-Debug进行调试。使用CubeMX进行代码生成并在VSCode+EIDE中编辑和编译、调试首先使用CubeMX配置好时钟、外设等,然后生成工程,其中:ProjectManager/Project/ToolchainIDE项目,如使用MDK-ARM,则在其后的EIDE中应设置AC5或AC6编译器......
  • JavaScript 程序寻找通过 2 个点的线(Program to find line passing through 2 Points)
              在数学和计算机科学中,找到通过两个点的线的方程是一个基础问题。假设我们有两个点 P1​(x1​,y1​) 和 P2​(x2​,y2​),我们想要找到通过这两个点的直线方程。直线方程的形式直线的方程通常表示为 y=mx+b,其中 m 是斜率,b 是 y 轴截距。计算斜率......
  • Python酷库之旅-第三方库Pandas(104)
    目录一、用法精讲451、pandas.DataFrame.pow方法451-1、语法451-2、参数451-3、功能451-4、返回值451-5、说明451-6、用法451-6-1、数据准备451-6-2、代码示例451-6-3、结果输出452、pandas.DataFrame.dot方法452-1、语法452-2、参数452-3、功能452-4、返回值......