当前位置: 首页 > backend >正文

【Linux】VSCode用法

描述

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

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


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.xdnf.cn/news/3381.html

相关文章:

  • 【嵌入式———通用定时器基本操作——实验需求2:案列:测量PWM的频率/周期】
  • 用手机相册教我数组概念——照片分类术[特殊字符][特殊字符]
  • 构建现代分布式云架构的三大支柱:服务化、Service Mesh 与 Serverless
  • 第十一届蓝桥杯 2020 C/C++组 门牌制作
  • vue 常见ui库对比(element、ant、antV等)
  • 兰亭妙微:数据驱动的 B 端设计:如何用 UI 提升企业级产品体验?
  • 【Qt】网络
  • ZYNQB笔记(十六):AXI DMA 环路测试
  • FreeSWITCH 发送 sip message 的 lua 程序
  • 深挖Java基础之:变量与类型
  • 总结C++中的STL
  • 分布式事务,事务失效,TC事务协调者
  • 图数据库榜单网站
  • 算法每日一题 | 入门-顺序结构-字母转换
  • X²+1素数问题
  • DirectX12(D3D12)基础教程七 深度模板视图\剔除\谓词
  • 【数据结构与算法】跳表实现详解
  • Windows结合WSL之ext4.vhdx不断增大问题
  • 第九节:文件操作
  • C++漫游指南——字符串篇与内存分配篇
  • ganesha-DBUS
  • 人形机器人的 “灵动密码”:动作捕捉与 AI 如何为其注入活力
  • BOSS的收入 - 华为OD机试(A卷,Java题解)
  • React-Native Android 多行被截断
  • Ubuntu 22.04 的 ROS 2 和 Carla 设置指南(其一)
  • Multicore-TSNE
  • 如何用GPU Instancing来优化树木草石重复模型
  • Kubernetes 配置中的 Selector 详解
  • GPU集群搭建步骤
  • 基础术语说明