【Linux】VSCode用法

news2025/7/18 20:50:41

描述

部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。

 专栏目录:记录自己的嵌入式学习之路-CSDN博客


目录

1    安装环境及运行C/C++

1.1    安装及配置步骤

1.2    运行的关键步骤

2    导入第三方C/C++库

2.1    创建并修改C/C++配置文件

2.2    修改tasks.json

3    常用快捷操作

3.1    打开内置终端

3.2    打开命令面板

3.3    多光标编辑

3.4    快捷切换编辑的文件

4    排除项目中的文件

5    VScode技巧

5.1    利用bear make建立索引

5.2    鼠标滚轮很卡

5.3    clangd报一些不是问题的问题

5.4    格式化文档时的缩进问题

5.5    调整文档格式化的其他格式

5.6    .gitignore忽略失败的解决方法


1    安装环境及运行C/C++

1.1    安装及配置步骤

        请参考这位大佬的文章:

VS Code 配置 C/C++ 编程运行环境(保姆级教程)_vscode配置c++环境-CSDN博客https://blog.csdn.net/qq_42417071/article/details/137438374

1.2    运行的关键步骤

(1)    配置launch.json

        点击右上角的齿轮新建一个launch.json。

        这里需要关注的主要是program和miDebuggerPath两项,其中miDebuggerPath就是要输入gdb的路径。

(2)    配置tasks.json

        上一步点击齿轮后也会新建一个tasks.json。

        这里需要关注的是command,若是编译C程序,就是gcc的完整路径,若是编译C++程序,就是g++的完整路径。

(3)    编辑C/C++配置

        Ctrl + Shift + P 输入命令,C/C++:

        编辑后要是有多个配置,可以在“C/C++:选择配置”那里进行选择:

也可以在右下角进行选择:


2    导入第三方C/C++库

2.1    创建并修改C/C++配置文件

        Ctrl + Shift + P 输入命令,C/C++:

        选择JSON那个选项,即打开c_cpp_properties.json,在includePath中添加所引用的头文件。并同时确认compilerPath是对的。

2.2    修改tasks.json

        在args项目下,添加包含的头文件路径、动态链接库路径以及动态链接库名称。(应该添加在-o前)

(1)    头文件路径

        “-I”, “<头文件路径(不包括头文件名称)>”

(2)    动态库文件路径

        “-L”, “<动态库文件路径(不包括库文件名称)>”

(3)    动态库名称

        “-l”, “<动态库名称(不包括后缀)>”


3    常用快捷操作

3.1    打开内置终端

        ctrl + `

3.2    打开命令面板

        ctrl + shift + p

3.3    多光标编辑

        (1)    alt + 鼠标左键,自行选中光标需要出现的地方(可任意位置);

        (2)    按住Ctrl + Alt,再按键盘上的上或下键(只能同一列);

        (3)    按住shift + alt,再使用鼠标拖动,也可以出现竖直的列光标,同时可以选中多列;

        (4)    选中一些文字,按shift + ctrl + L,可以选中所有与选中内容相同的内容,并都在其最后有光标;

        (5)    选中一些文字,按ctrl + D,可以增加选中下一个与选中内容相同的内容,并在其最后有光标,可重复使用达到一直选择后面的相同内容的效果;

        (6)    选中一段文字,按shift + alt + i,在每行末尾都会出现光标;

3.4    快捷切换编辑的文件

        在已经打开好几个文件的情况下,可以使用以下方法快速切换:

        (1)    Alt + <序号>:切换至打开的第n个文件;

        (2)    Ctrl + Tab:在已打开的文件中切换;


4    排除项目中的文件

如果项目中存在很多项目不需要的文件,例如对于驱动开发中的内核源码,<源码>/arch下除了arm文件夹外的别的文件是不需要的。要排除这些文件,可以在项目根目录上新建.vscode文件夹,并在.vscode下新建settings.json文件。

setting.json文件内容:
{
    "search.exclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "**/*.o":true,
        "**/*.su":true,
        "**/*.cmd":true,
        "Documentation":true,

        /* 屏蔽不用的架构相关的文件 */
        "arch/alpha":true,
        "arch/arc":true,
        "arch/arm64":true,
        "arch/avr32":true,
        "arch/[b-z]*":true,
        "arch/arm/plat*":true,
        "arch/arm/mach-[a-y]*":true,
        "arch/arm/mach-zx":true,

        /* 屏蔽不用的配置文件 */
        "arch/arm/configs/[a-w]*":true,
        "arch/arm/configs/[y-z]*":true,

        /* 屏蔽不用的 DTB文件 */
        "arch/arm/boot/dts/[a-y]*":true,
        "arch/arm/boot/dts/.*":true,
    },

    "files.exclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/CVS": true,
        "**/.DS_Store": true,
        "**/*.o":true,
        "**/*.su":true,
        "**/*.cmd":true,
        "Documentation":true,

        /* 屏蔽不用的架构相关的文件 */
        "arch/alpha":true,
        "arch/arc":true,
        "arch/arm64":true,
        "arch/avr32":true,
        "arch/[b-z]*":true,
        "arch/arm/plat*":true,
        "arch/arm/mach-[a-y]*":true,
        "arch/arm/mach-zx":true,

        /* 屏蔽不用的配置文件 */
        "arch/arm/configs/[a-w]*":true,
        "arch/arm/configs/[y-z]*":true,

        /* 屏蔽不用的 DTB文件 */
        "arch/arm/boot/dts/[a-r][g-z]*":true,
        "arch/arm/boot/dts/[b-r]*":true,
        "arch/arm/boot/dts/s[0-9]*":true,
        "arch/arm/boot/dts/s[a-x]*":true,
        "arch/arm/boot/dts/[t-y]*":true,
        "arch/arm/boot/dts/zynq-[a-z]*":true,
        "arch/arm/boot/dts/.*":true,

        ".*":true,
    }
}

5    VScode技巧

5.1    利用bear make建立索引

方法一:利用Intellisense(不是很好使):

        (1)    安装一个bear;

        (2)    以后使用make命令都改为bear make;

        (3)    搜索命令选择IntelliSence配置

        

        (4)    选择使用bear生成的compile_commands.json

        

        (5)    如果没有该选项可以直接到c_cpp_properties.json中增加compileCommands项指向该json: 

        

方法二:利用clangd

        (1)    同方法一

        (2)    同方法一

        (3)    VScode安装clangd插件

        (4)    安装clangd,可以从vscode弹出的clangd插件要求安装clangd server的通知中下载,其会解压到home目录下直接使用,不安装到系统环境。除此以外,还可以自行使用apt安装,其包名一般叫做clangd-X,这个X可以是12、10、9、8等等,越新越好。或者自己到clangd的github下载一个编译好的release版本解压,然后到vscode的clangd设置中指定clangd文件所在路径就可以用了(该方法只支持x86_x64架构,因为官方没有编译arm架构的)。

        (5)    禁用vscode的C/C++插件,禁用Maketools,禁用Intellisense。

        (6)    每次使用bear make后,将c_cpp_properties.json中的”cc”即编译器改为项目使用的编译器,如:arm-xilinx-linux-gnueabi-gcc,然后最好使用shift+ctrl+p输入clangd:restart language server重启系统的clangd服务。

5.2    鼠标滚轮很卡

        设置界面将mouse Wheel Scroll Sensitivity调大,1就会卡,2刚好。

5.3    clangd报一些不是问题的问题

如下:

        Unknown argument: '-mno-fdpic'

        Unknown argument: '-fno-ipa-sra'

        Unknown argument: '-fno-allow-store-data-races'

        Unknown argument: '-fconserve-stack'

        

解决方法:

        在打开的目录的最上层新建一个.clangd文件,文中写入以下内容:

CompileFlags:

  Add: -Wno-unknown-warning-option

  Remove: [-mno*, -fno*, -fco*]

        其中*为通配符,移除内容可根据实际需要进行修改。修改该文件后需要restart一下clangd server(用VScode里面的命令)。

5.4    格式化文档时的缩进问题

        安装了clangd后,格式化文档命令(ctrl+shift+i)使用的一般就是clangd,而clangd默认的缩进是2个空格,因此需要进行修改。

        在项目根目录新建.clang-format文件,并添加IndentWidth: 4即可。

5.5    调整文档格式化的其他格式

        请参考这位大佬的文章:
VS Code C++ 代码格式化方法(clang-format)_vs code clang-format-CSDN博客https://blog.csdn.net/core571/article/details/82867932

5.6    .gitignore忽略失败的解决方法

        有时候还没创建.gitignore文件就提交过git,后续哪怕添加了文件进去,添加前已经提交过的文件依然会一直被跟踪而不会被忽略,此时需要使用git rm --cached <file>命令来清除这些已经跟踪的文件,清楚完还需要git commit提交一次。

        注意!清除前最好没有任何待提交或待放进缓存区的记录。

        详细可以参考这位大佬的文章:

vscode中 .gitignore 规则不生效 - 简书https://www.jianshu.com/p/773e616d6c18

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

来聊聊JVM中安全点的概念

文章目录 写在文章开头详解safepoint基本概念什么是安全点?为什么需要安全点JVM如何让线程跑到最近的安全点线程什么时候需要进入安全点JVM如何保证线程高效进入安全点如何设置安全点用一次GC解释基于安全点的STW实践-基于主线程休眠了解安全点的工作过程代码示例基于日志印证…

Nginx — http、server、location模块下配置相同策略优先级问题

一、配置优先级简述 在 Nginx 中&#xff0c;http、server、location 模块下配置相同策略时是存在优先级的&#xff0c;一般遵循 “范围越小&#xff0c;优先级越高” 的原则&#xff0c;下面为你详细介绍&#xff1a; 1. 配置继承关系 http 块&#xff1a;作为全局配置块&…

线性代数—向量与矩阵的范数(Norm)

参考链接&#xff1a; 范数&#xff08;Norm&#xff09;——定义、原理、分类、作用与应用 - 知乎 带你秒懂向量与矩阵的范数(Norm)_矩阵norm-CSDN博客 什么是范数&#xff08;norm&#xff09;&#xff1f;以及L1,L2范数的简单介绍_l1 norm-CSDN博客 范数&#xff08;Norm…

【业务领域】电脑主板芯片电路结构

前言 由前几期视频合集(零基础自学计算机故障排除—7天了解计算机开机过程)&#xff0c;讲解了POST的主板软启动过程&#xff1b;有不少网友留言、私信来问各种不开机的故障&#xff0c;但大多网友没能能过我们的这合集视频&#xff0c;很好的理清思路&#xff0c;那这样的情况…

pandas读取Excel数据(.xlsx和.xls)到treeview

对于.xls文件&#xff0c;xlrd可能更合适&#xff0c;但需要注意新版本的xlrd可能不支持xlsx&#xff0c;不过用户可能同时需要处理两种格式&#xff0c;所以可能需要结合openpyxl和xlrd&#xff1f;或者直接用pandas&#xff0c;因为它内部会处理这些依赖。 然后&#xff0c;…

JVM——垃圾收集策略

GC的基本问题 什么是GC&#xff1f; GC 是 garbage collection 的缩写&#xff0c;意思是垃圾回收——把内存&#xff08;特别是堆内存&#xff09;中不再使用的空间释放掉&#xff1b;清理不再使用的对象。 为什么要GC&#xff1f; 堆内存是各个线程共享的空间&#xff0c…

马克·雷伯特:用算法让机器人飞奔的人

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 马克雷伯特:用算法让机器人飞奔的人 一、天才的起点 在机器人领域,有一个名字如雷贯耳——马克雷伯特(Marc Raibert)。作为波士顿动力公司(Boston…

信创系统资产清单采集脚本:主机名+IP+MAC 一键生成 CSV

原文链接&#xff1a;信创系统资产清单采集脚本&#xff1a;主机名IPMAC 一键生成 CSV Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在信创终端操作系统上自动批量采集主机名、IP 和 MAC 并导出为 CSV 表格的实战文章&#xff01;本方案使用 sshpass 和 Bash 脚本…

SpringBoot获取用户信息常见问题(密码屏蔽、驼峰命名和下划线命名的自动转换)

文章目录 一、不返回password字段二、返回的createTime和updateTime为空原因解决&#xff1a;开启驼峰命名和下划线命名的自动转换 设置返回的日期格式 一、不返回password字段 在字段上面添加JsonIgnore注解即可 JsonIgnore // 在把对象序列化成json字符串时&#xff0c;忽略…

Mac下安装Python3,并配置环境变量设置为默认

下载Python 访问Python官方网站 https://www.python.org/ 首先获得python3安装路径 执行命令&#xff1a; which python3 以我这台电脑为例&#xff0c;路径为&#xff1a;/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 编辑 bash_profile 文件 然后用 vim 打…

Linux-04-用户管理命令

一、useradd添加新用户: 基本语法: useradd 用户名:添加新用户 useradd -g 组名 用户:添加新用户到某个组二、passwd设置用户密码: 基本语法: passwd 用户名:设置用户名密码 三、id查看用户是否存在: 基本语法: id 用户名 四、su切换用户: 基本语法: su 用户名称:切换用…

【进阶】--函数栈帧的创建和销毁详解

目录 一.函数栈帧的概念 二.理解函数栈帧能让我们解决什么问题 三.相关寄存器和汇编指令知识点补充 四.函数栈帧的创建和销毁 4.1.调用堆栈 4.2.函数栈帧的创建 4.3 函数栈帧的销毁 一.函数栈帧的概念 --在C语言中&#xff0c;函数栈帧是指在函数调用过程中&#xff0c;…

【一】 基本概念与应用领域【数字图像处理】

考纲 文章目录 1 概念2005甄题【名词解释】2008、2012甄题【名词解释】可考题【简答题】可考题【简答题】 2 应用领域【了解】2.1 伽马射线成像【核医学影像】☆2.2 X射线成像2.3 紫外波段成像2.4 可见光和红外波段成像2.5 微波波段成像2.6 无线电波段成像2.7 电子显微镜成像2…

NU1680低成本、无固件、高集成度无线充电电源接收器

无线充电 电子产品具有无线充电功能使用会更便利&#xff0c;介绍一款低成本、无固件、高集成度无线充电电源接收器NU1680 原理图和BOM可点绑定资源下载&#xff0c;LC部分电容建议X7R。 Load空载切满载测试 (CC Mode) – 尽量保证电子负载没有过冲 – 电子负载不要从0到满…

2025MathorCup数学应用挑战赛B题

目录 模型建立与求解 1.问题一的模型建立与求解 1.1 搬迁补偿模型设计 1.2 住户是否搬迁的应对策略与分析 1.3 定量讨论 2.问题二的模型建立与求解 2.1 搬迁方案模型的优化介绍 2.2 模型的评估 2.3 模型结果 3.问题三的模型建立与求解 3.1 拐点存在性分析模型的建立 3.2 模型的…

组件的基本知识

组件 组件的基本知识 组件概念组成步骤好处全局注册生命周期scoped原理 父子通信步骤子传父 概念 就是将要复用的标签&#xff0c;抽离放在一个独立的vue文件中&#xff0c;以供主vue文件使用 组成 三部分构成 template&#xff1a;HTML 结构 script: JS 逻辑 style: CSS 样…

Origin绘图操作:图中迷你图绘制

一、背景描述 Origin绘图时&#xff0c;局部数据变化较小&#xff0c;在整体图片中表现为局部曲线重叠在一起&#xff0c;图中y1和y2在x0-2时重叠在一起&#xff0c;需要将局部放大&#xff0c;绘制迷你图 二、实现方法 1.在左边工具栏选择放大镜&#xff0c;按住ctrl在图中…

数据升降级:医疗数据的“时空穿梭“系统工程(分析与架构篇)

一、核心挑战与量化分析 1. 版本演化困境的深度解析 (1) 格式断层的结构化危机 数据转换黑洞:某医疗信息平台(2021-2023)统计显示: 数据类型CDA R1→R2转换失败率R2→FHIR转换失败率关键失败点诊断记录28.4%19.7%ICD编码版本冲突(18.7%)用药记录15.2%12.3%剂量单位标准化…

【GESP】C++三级练习 luogu-B2089 数组逆序重存放

GESP三级练习&#xff0c;一维数组练习&#xff08;C三级大纲中5号知识点&#xff0c;一维数组&#xff09;&#xff0c;难度★☆☆☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-3-luogu-b2089/ 【GESP】C三级练习 luogu-B2089 数组逆序重存放 | OneCoderGE…

Copilot 上线深度推理智能体 Researcher

近日&#xff0c;微软推出两款首创的工作场景推理智能体&#xff1a;Researcher&#xff08;研究员&#xff09;和Analyst&#xff08;分析师&#xff09;。它们能以安全合规的方式访问您的工作数据&#xff08;包括邮件、会议、文件、聊天记录等&#xff09;及互联网信息&…