【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.pswp.cn/web/78064.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78064.shtml
英文地址,請注明出處:http://en.pswp.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/…