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

news/2024/9/22 4:19:54/文章来源:https://www.cnblogs.com/AyeeMinerva/p/18384292

前言

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,无法直接选择运行,如有能够直接针对后缀名进行调试的方法,烦请评论告知)

至此配置完毕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/788440.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ts---基础语法及使用

ts的使用: 第一步:安装npm config set registry https://registry.npmmirror.comnpm install -g typescript安装成功后,可以检查是否安装成功:tsc -v一、变量的类型 1、任意类型 any 声明为 any 的变量可以赋予任意类型的值。 2、数字类型 number 双精度 64 位浮点值。它可…

Multipass虚拟机ssh登录(密码方式)

Multipass 虚拟机 ssh 登录(密码方式)Multipass 虚拟机 ssh 登录(密码方式)[!NOTE] 以 Ubuntu 24,04 LTS 为例准备工作为了演示新建一个示例虚拟机。multipass launch --name vm01 -c 4 -m 4G -d 100G --network bridged操作步骤 进入虚拟机 multipass shell vm01设置密码 …

Asp.Net Core中Typed HttpClient高级用法

另一个常见的需求是根据不同的服务接口创建不同的HttpClient实例。为了实现这一点,ASP.NET Core提供了Typed HttpClient的支持。 下面是使用Typed HttpClient的示例代码: public interface IExampleService {Task<string> GetData(); }public class ExampleService : I…

win10的自动更新在哪,怎么打开电脑更新设置

在Windows 10系统中,自动更新的设置位置相对直观,用户可以按照以下步骤找到并配置自动更新设置: 一、通过设置界面找到自动更新 1.打开设置:点击屏幕左下角的“开始”按钮,然后选择“设置”(齿轮形状的图标)或者直接按下Win + I快捷键打开设置应用。 2.进入更新和安全:…

RapidCMS 几个常见漏洞

侵权声明 本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。 如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系: [360619623@qq.c…

Cloud Studio:颠覆传统的云端开发与学习解决方案

Cloud Studio 的推出无疑为开发者和学习者们提供了一种全新的工作和学习体验。作为一款基于浏览器的集成开发环境,它不仅让开发者能够随时随地访问自己的开发工具,还极大地简化了开发过程。无论是初学者还是经验丰富的开发者,Cloud Studio 都通过其全面的功能和丰富的资源,…

Linux上网配置-CentOS7

上网配置思路1.确认虚拟机的网络适配器为桥接模式 2.网卡配置文件是否存在并启用网卡接口 3.网卡配置文件详解:静态IP地址、子网掩码、默认网关、物理地址以及 DNS 4.局域网的其他物理机能远程该虚拟机 5.虚拟机ping通外网一、确认虚拟机的网络适配器为桥接模式问题1.为什么要…

【开源】用香橙派Zero 2W做电视机顶盒

先前用闲置的香橙派3 LTS做了一个电视机顶盒,不需要画电路,加上3D打印的外壳就好了。最近又有闲置的香橙派Zero 2W,功耗低又很小巧,忍不住又想拿来做机顶盒。香橙派Zero 2W算是个核心板,需要配一个扩展板才能得到RJ-45百兆网口、A型USB 2.0接口、红外接收头等接口。官方有…

接口获取文件流VUE转换为blob展示图片

接口获取文件流VUE转换为blob展示图片 vue通过接口获取图片文件流<template><el-image :src="imgurl" alt="资源访问失败" width="80%" height="80%" style="display: block" /> </template> <script …

pygame封装两个常用控件

#coding=utf-8import os,sys,re,time import pygame import random from win32api import GetSystemMetrics from tkinter import messageboxpygame.init() pygame.display.set_caption("我的控件")percent = 0.6 screen_width = GetSystemMetrics(0) screen_height …

pygame封装连个常用控件

#coding=utf-8import os,sys,re,time import pygame import random from win32api import GetSystemMetrics from tkinter import messageboxpygame.init() pygame.display.set_caption("我的控件")percent = 0.6 screen_width = GetSystemMetrics(0) screen_height …

相机产品展示步入3D可视化新纪元

在这个日新月异的数字时代,科技的每一次飞跃都在重新定义着我们的生活方式与创作边界。当摄影艺术邂逅前沿科技,一场关于视觉盛宴的变革正悄然上演,为摄影爱好者与专业人士开启了一扇通往无限创意与沉浸式体验的大门。传统相机展示往往受限于二维平面的局限,难以全方位、多…