【Linux】VSCode用法

描述

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

 专栏目录:记录自己的嵌入式学习之路-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-optionRemove: [-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.mzph.cn/web/78064.shtml

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

相关文章

WPF之RadioButton控件详解

文章目录 一、RadioButton简介二、RadioButton的基本用法1. 创建基本的RadioButton2. 分组管理3. 设置默认选中 三、RadioButton的重要属性和事件1. 关键属性2. 主要事件3. 事件处理流程4. 监听选中状态变化 四、数据绑定与RadioButton1. 基本数据绑定2. 数据绑定流程3. 使用枚…

笔试专题(十三)

文章目录 kotori和气球题解代码 走迷宫题解代码 主持人调度&#xff08;二&#xff09;&#xff08;难题&#xff09;题解代码 kotori和气球 题目链接 题解 1. 数学-排列组合 2. 每次乘完之后对109取模 代码 #include<iostream>using namespace std;int main() {int…

图形图像基础知识(1)---- RGB/YUV 颜色格式

目录 常见RAW颜色格式RGB类型YUV类型YUV类型汇总YUV444类型YUV422类型YUV420类型 参考实例 常见RAW颜色格式 RGB 类型&#xff1a; ARGB1010102&#xff0c;ABGR1010102&#xff0c;BGRA1010102&#xff0c;RGBA1010102 ARGB8888&#xff0c;ABGR8888&#xff0c;BGRA8888&…

CentOS7.9安装OpenSSL 1.1.1t和OpenSSH9.9p1

一、临时开启telnet登录方式&#xff0c;避免升级失败无法登录系统 &#xff08;注意telnet登录方式存在安全隐患&#xff0c;升级openssh相关服务后要记得关闭&#xff09; 1.安装telnet服务 yum -y install xinetd telnet* 2.允许root用户通过telnet登陆&#xff0c;编辑…

使用DCI和RTIT技术进行精准调优--看录像

使用DCI和RTIT技术进行精准调优_哔哩哔哩_bilibili 每次看录像都记录一下。 PT/RTIT简介 DCI技术即通过USB3.0接口去访问调试目标机的JTAG组件&#xff0c;凡是运行在CPU上的代码均可以进行调试&#xff0c;这就没有了使用WinDBG调试时&#xff0c;会出现的不能调试敏感代码…

从MCP基础到FastMCP实战应用

MCP(https://github.com/modelcontextprotocol) MCP&#xff08;模型上下文协议&#xff09; 是一种专为 基于LLM的工具调用外部工具而设计的协议 &#xff0c; 本质上是 LLM ↔ 工具之间的RPC&#xff08;远程过程调用&#xff09; 的一种安全且一致的处理方式&#xff0c; 是…

深入理解C语言中的整形提升与算术转换

深入理解C语言中的整形提升与算术转换 一.整形提升&#xff1a;概念与原理 在C语言中&#xff0c;整形提升&#xff08;Integer Promotion&#xff09;是一个重要但容易被忽视的概念。它指的是在表达式中&#xff0c;任何小于int类型的整型&#xff08;如char、short&#xf…

编程题python常用技巧-持续

1.字典 1.1排序 在Python中&#xff0c;要按照字典的值进行排序&#xff0c;可以按照以下步骤操作&#xff1a; 方法说明 ‌获取键值对列表‌&#xff1a;使用 dict.items() 获取字典的键值对视图。‌排序键值对‌&#xff1a;使用 sorted() 函数&#xff0c;并通过 key 参…

硬件工程师面试常见问题(11)

第五十一问&#xff1a;器件手册的翻译题目 要学英语啊&#xff0c;孩子。 第五十二问&#xff1a;二极管三极管常识题 1.二极管的导通电压一般是 0.7V 2.MOS管根据掺杂类型可以分为 NMOS和PMOS 3.晶体三极管在工作时,发射结和集电结均处于正向偏置,该晶体管工作在一饱和态。…

mysql 配置文件中的[client]、[mysqld]、[mysqldump]和[mysql]区块的作用区别

1. [client] 区块 作用&#xff1a; 适用于 所有 MySQL 客户端工具&#xff08;如 mysql 命令行客户端、mysqldump、mysqladmin 等&#xff09;。 常见配置项&#xff1a; [client] host 127.0.0.1 # 默认连接的服务器地址 port 3306 # 默认端口 user root …

SARSA 算法详解:python从零实现

喜欢可以订阅专栏哟 第一章 强化学习基础与核心概念 1.1 强化学习的定义与特点 强化学习(Reinforcement Learning, RL)是机器学习三大范式之一(监督学习、无监督学习、强化学习),其核心思想是通过智能体(Agent)与环境(Environment)的持续交互来学习最优策略。与监督…

(C题|社交媒体平台用户分析问题)2025年第二十二届五一数学建模竞赛(五一杯/五一赛)解题思路|完整代码论文集合

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

AI重塑SEO关键词策略

内容概要 传统SEO策略主要依赖人工经验与基础工具进行关键词布局&#xff0c;存在效率低、覆盖维度单一等痛点。而AI技术的介入&#xff0c;使关键词优化从静态词库匹配转向动态语义网络构建。通过自然语言处理&#xff08;NLP&#xff09;与深度学习模型&#xff0c;AI不仅能…

【Unity】 组件库分类详解

1️⃣ Audio&#xff08;音频组件&#xff09; 用于处理游戏中的声音。 Audio Source 读音[ˈɔːdiəʊ ˈsɔːs]&#xff0c;音频源组件&#xff0c;用于播放音频文件&#xff0c;可设置音量、Pitch、循环播放等属性&#xff0c;是音频播放的核心组件。 Audio Listener 读音…

【区块链】区块链技术介绍

引言 区块链技术自2008年中本聪提出比特币概念以来&#xff0c;逐渐从加密货币的底层技术演变为一场颠覆传统信任机制的全球性革命。它不仅重塑了金融体系&#xff0c;更在物流、医疗、政务等领域展现出巨大潜力。本文将用通俗易懂的语言&#xff0c;结合实例与原理&#xff0c…

MySQL零基础入门:Ubuntu环境安装与操作精解

知识点1【数据库】 数据的存储方式&#xff0c;我们之前学的&#xff0c;从变量&#xff0c;数组&#xff0c;链表&#xff0c;最后到文件&#xff0c;文件之上&#xff0c;便是数据库&#xff0c;而我们要介绍的MySQL就是数据库的关系数据库中的其中一种。 1、数据库 本质&…

力扣——23合并升序链表

目录 1:题目描述&#xff1a; 2.算法思想&#xff1a; 3.代码展示&#xff1a; 1:题目描述&#xff1a; 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 1&#xff1a; 输入&#xff…

AI重构危化品进口清关:一场效率与安全的双重革命

在全球化工产业链深度捆绑的今天&#xff0c;每年超过3亿吨危险化学品通过中国各大口岸流入国内市场。这些支撑着新能源电池、半导体材料等战略产业的“工业血液”&#xff0c;其进口清关流程却长期困于效率与安全的两难困境&#xff1a;人工审核单据平均耗时72小时&#xff0c…

牛客网题解 | 栈的压入、弹出序列

栈的压入、弹出序列 一、题目链接二、题目三、算法原理&#xff1a;用一个栈模拟入栈出栈的过程四、编写代码 一、题目链接 栈的压入、弹出序列 二、题目 三、算法原理&#xff1a;用一个栈模拟入栈出栈的过程 思路&#xff1a;用一个栈模拟入栈出栈的过程&#xff0c;模拟出…

使用CubeMX新建DMA工程——存储器到存储器模式

目录 1、新建板级支持包 2、修改main.c 3、程序流程 4、问题 新建工程的基本操作步骤参考这里&#xff1a; 【【野火】STM32 HAL库开发实战指南 教学视频 手把手教学STM32全系列 零基础入门CubeMXHAL库&#xff0c;基于野火全系列STM32开发板】 https://www.bilibili.com/…