vim的一般操作(分屏操作) 和 Makefile 和 gdb

目錄

一. vim的基本概念

二. vim基礎操作?

2.1 插入模式?aio

2.2 [插入模式]切換至[正常模式]? Esc

2.3[正常模式]切換至[末行模式]? shift + ;

2.4?替換模式??Shift + R

2.5 視圖(可視)模式?(可以快速 刪除//注釋 或者 增加//注釋) ctrl + v

三:一些基礎指令操作:

3.1 移動光標

3.2刪除文字

3.3 復制

3.4 替換

3.5 更改

3.6 vim末行模式常用命令

3.7 雙屏幕 test.c 和 test.h 同時寫入小技巧

3.7.1 方法一? 使用垂直或水平分割

3.7.2方法2:使用標簽頁

3.7.3 方法3:使用窗口切換快捷鍵

四. gcc 和 g++

五. Makefile

六. gdb的一般操作

6.1開始調試(是對可執行文件的調試)


一. vim的基本概念


vim的三種模式(其實有好多模式,目前掌握這3種即可),分別是命令模式(command mode)插入模式(Insert mode) 底行模式(last line mode),各模式的功能區分如下:
?

1.1?命令模式 (?正常 / 普通 模式):控制屏幕光標的移動,字符、字或行的刪除

1.2 插入模式 只有在插入模式下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。該模式是我們后面用的最頻繁的編輯模式。

1.3?末行模式? 文件保存或退出,也可以進行文件替換,找字符串,列出行號等操作。? 在命令模式下,“ shift + : ”即可進入該模式。要查看你的所有模式:打開vim,底行模式直接輸入:help vim-modes


二. vim基礎操作?

2.1 插入模式?aio


輸入a :光標會移動到當前字符的后面,并進入[插入模式]。
輸入i? :光標會停留在當前字符的前面,并進入[插入模式]。
輸入o? :會在當前行的下方插入一個新行,并進入[插入模式]。


2.2 [插入模式]切換至[正常模式]? Esc


目前處于[插入模式],可以按一下「ESC」鍵轉到 [正常模式] 。


2.3[正常模式]切換至[末行模式]? shift + ;


「shift+;」,其實就是輸入「:」,就可以進入末行模式。

w(保存當前文件)
wq(輸入「wq」,存盤并退出vim)
q!(輸入q!,不存盤強制退出vim)


2.4?替換模式??Shift + R

按下Shift + R(即?R)?進入替換模式,在此模式下,你輸入的每個字符都會替換光標處的字符,按?Esc?退出替換模式。


2.5 視圖(可視)模式?(可以快速 刪除//注釋 或者 增加//注釋) ctrl + v

刪除操作:(例子是刪除// 注釋):

1.按下Ctrl +v 進入塊選擇模式。

2.用 j(向下) 或? k (向上) 或 h(左)或 L(右)移動光標,選中所有行的/部分(甚至包括后面的注釋內容)。

3.按下?d?或?x?直接刪除選中的塊區域。

插入操作(例子是加入// 注釋):

1. 進入塊選擇模式:按下?Ctrl + v

2. 選擇行范圍:按?j(向下)或?k(向上)選擇要注釋的多行。

3. 如果注釋需要對齊,可以按?l(向右)選中多列(例如選中行首的空白區域)。

4. 插入注釋符號:按?Shift + i(大寫?I)進入插入模式。

5 .輸入?//(或?//?帶空格)。

6. 按?Esc?退出插入模式,所有選中行的行首會自動添加?//


三:一些基礎指令操作:

3.1 移動光標


vim可以直接用鍵盤上的光標來上下左右移動,但正規的vim是用小寫英文字母「h」、「j」、
「k」、「L」,分別控制光標左、下、上、右移一格
按「G」:移動到文章的最后
按「」:移動到光標所在行的“行尾”
按「^」:移動到光標所在行的“行首”
按「w」:光標跳到下個字的開頭
按「e」:光標跳到下個字的字尾
按「b」:光標回到上個字的開頭
按「#」:光標移到該行的第#個位置,如:5l,56l
按[gg]:進入到文本開始
按[shift+g]:進入文本末端
按「ctrl」+「b」:屏幕往“后”移動一頁
按「ctr」+「f」:屏幕往“前”移動一頁
按「ctr」+「u」:屏幕往“后”移動半頁
按「ctrl」+「d」:屏幕往“前”移動半頁



3.2刪除文字


「x」:每按一次,刪除光標所在位置的一個字符
「#x」:例如,「6x」表示刪除光標所在位置的“后面(包含自己在內)”6個字符
「X」:大寫的X,每按一次,刪除光標所在位置的“前面”一個字符
「#X」:例如,「20X」表示刪除光標所在位置的“前面”20個字符
「dd」:刪除光標所在行
「#dd」:從光標所在行開始刪除#行



3.3 復制


「yw」:將光標所在之處到字尾的字符復制到緩沖區中。
「#yw」:復制#個字到緩沖區
「yy」:復制光標所在行到緩沖區。
「#yy」:例如,「6yy」表示拷貝從光標所在的該行“往下數”6行文字。
「p」:將緩沖區內的字符貼到光標所在位置。注意:所有與“有關的復制命令都必須
與“p”配合才能完成復制與粘貼功能。



3.4 替換


「r」:替換光標所在處的字符。
「R」:替換光標所到之處的字符,直到按下「ESC」鍵為止。
撤銷上一次操作:
「u」:如果您誤執行一個命令,可以馬上按下」,回到上一個操作。按多次“u”可以執行
多次回復。
「ctrl+ r」:撤銷的恢復



3.5 更改


「cw」:更改光標所在處的字到字尾處
「c#w」:例如,「c3w」表示更改3個字
跳至指定的行:
「ctrl」+「g」列出光標所在行的行號。
「#G」:例如,「15G」,表示移動光標至文章的第15行行首。


3.6 vim末行模式常用命令


「shift + :」冒號即可進入末行模式。
列出行號:「set nu」:輸入「set nu」后,會在文件中的每一行前面列出行號。
跳到文件中的某一行:「#」:「#」號表示一個數字,在冒號后輸入一個數字,再按回車鍵就會跳到該行了,如輸入數字#15,就會跳到的第15行。


3.7 雙屏幕 test.c 和 test.h 同時寫入小技巧

3.7.1 方法一? 使用垂直或水平分割


3.7.2方法2:使用標簽頁


3.7.3 方法3:使用窗口切換快捷鍵


四. gcc 和 g++

gcc編譯選項
格式:gcс? [選項]? 要編譯的文件? [選項]? [目標文件]?

比如:

預處理:

編譯:

匯編:

連接:

ESc 后綴 對應文件 iso?后綴


五. Makefile

首先我們需要touch 一個Makefile

下面是Makefile 的例子:


make 就可以運行程序,比如:

像clean這種,沒有被第一個目標文件直接或間接關聯,那么它后面所定義的命令將不會被自動執行(也就是make),不過,我們可以顯示要make執行。即命令—“make clean”,以此來清除所有的目標文件,以便重編譯。

.PHONY 解釋:一般我們這種clean的目標文件,我們將它設置為偽目標,用 .PHONY 修飾,偽目標的特性是,總是能被執行的。


六. gdb的一般操作

首先我們最好安裝cgdb

? 推薦安裝cgdb:
? Ubuntu:? sudo apt-get install -y cgdb?
? Centos:? sudo yum? install -y cgdb?

程序的發布方式有兩種,debug模式和release模式,Linux gcc/g++ 出來的二進制程序,默認是release模式。
要使用gdb調試,必須在源代碼生成二進制程序的時候,加上一g選項,如果沒有添加,程序無法被編譯


比如下面的debug的文件:

6.1開始調試(是對可執行文件的調試)

比如:

命令列表 重要的用紅色圈起來(可以自己去嘗試,我就不試了):

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

命令??作用? ?樣例
list/l? 顯示源代碼,從上次位置開始,每次列出10行?list/l 10

list/l 函數名
列出指定函數的源代碼l main
list/l 文件名:行號列出指定文件的源代碼list/l test.c:1
r/run從程序開始連續執行r
n/next單步執行,不進入函數內部n
s/step單步執行,進入函數內部step
break/b 行號(類似list的用法)在指定行號設置斷點

b 10

break test.c:10

b 函數名在函數開頭設置斷點b main
info b/break查看當前所有斷點的信息info b
finish執行到當前函數返回,然后停止finish
set var?修改變量的值set var i=10
continue/c從當前位置開始連續執行程序continue
delete breakpoints刪除所有斷點delete breakpoints
d n刪除序號為n的斷點d 1
disable breakpoints禁用所有斷點disable breakpoints
enable breakpoints啟用所有斷點enable breakpoints
display 變量跟蹤顯示指定變量的值(每次停止時)display x
undisplay?變量取消對指定編號的變量的跟蹤顯示undisplay x
backtrace/bt查看當前執行棧的各級函數調用及參數bt
info/i locals查看當前棧幀的局部變量值info/i locals
until 行號執行到指定行號until 20
quit/q退出GDB調試器q

?提示:假如我們不小心按到 Esc到 末行模式 ,按 i 可以繼續輸入指令。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74183.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74183.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux:基礎IO---文件描述符

文章目錄 1. 前言1.1 C語言文件知識回顧 2. 文件2.1 文件基礎知識 3. 被打開的文件3.1 以C語言為主,先回憶一下C文件接口3.2 過渡到系統,認識文件系統調用3.3 訪問文件的本質3.4 重定向&&緩沖區 序:在深入了解了進程的內容后&#xf…

2025年十大AI工具對比

2025年十大AI工具對比 以下是2025年各大AI工具的詳細對比,涵蓋性能、功能、用戶評價等方面,并以表格形式呈現。數據來源于多個權威來源,確保信息全面且準確。 對比表格 排名AI工具名稱主要功能性能特點用戶評價適用場景1DeepSeek多模態AI、…

JDK 24 發布,新特性解讀!

一、版本演進與技術格局新動向 北京時間3月20日,Oracle正式發布Java SE 24。作為繼Java 21之后的第三個非LTS版本,其技術革新力度遠超預期——共集成24項JEP提案,相當于Java 22(12項)與Java 23(12項&#…

批量圖片壓縮工具,高效減小文件大小并保持質量

在處理大量圖片時,如何高效壓縮文件大小并保持畫質是個常見難題。今天為大家推薦一款專業工具——JPGC,它專為圖片批量處理設計,能快速壓縮JPG/JPEG格式圖片,在減小文件體積的同時盡可能保留畫質,尤其適合處理數碼相機…

【002安卓開發方案調研】之Kotlin+Jetpack開發方案

基于2025年國內移動開發領域的現狀,結合Jetpack Compose的技術特性和生態發展,以下是對KotlinJetpack Compose開發安卓應用的綜合分析: 一、技術與生態成熟度評估 1. 技術成熟度 聲明式UI與開發效率 Jetpack Compose采用聲明式編程模型&…

軟考中級-軟件設計師 準備

軟考中級-軟件設計師 準備 一、軟考相關1.1、考試時間1.2、考試時長1.3、題型和分值: 二、軟考備考2.1、相關書籍2.2、推薦課程:B站up主zst_20012.3、學習路線 一、軟考相關 1.1、考試時間 一年有兩次軟考,一般是五月末和十一月的中旬 以下…

【數據挖掘】Python基礎環境安裝配置

【數據挖掘】Python基礎環境安裝配置 一、摘要二、安裝Python3.13.2三、安裝Jupyter Notebook四、安裝Numpy和Pandas以及matplotlib五、安裝scikit-learn庫和seaborn庫 一、摘要 本文主要介紹如何在Windows上安裝Python3.13.2,然后基于該Python版本安裝Jupyter not…

給語言模型增加知識邏輯校驗智能,識別網絡中的信息投毒行為模式

目前階段,現在的LLM缺少一個形式邏輯校驗模型。 網絡系統上不斷增長的信息相當部分不再純粹是人類生成,而是也由各種模型生成輸出,模型后續從網絡系統上取得信息,AI生態系統陷入了信息熵增循環,AI模型生態系統的計算輸…

OpenLayers集成天地圖服務開發指南

以下是一份面向GIS初學者的OpenLayers開發詳細教程&#xff0c;深度解析代碼&#xff1a; 一、開發環境搭建 1.1 OpenLayers庫引入 <!-- 使用CDN引入最新版OpenLayers --> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/ollatest/ol.c…

【免費】2000-2019年各省地方財政房產稅數據

2000-2019年各省地方財政房產稅數據 1、時間&#xff1a;2000-2019年 2、來源&#xff1a;國家統計局、統計年鑒 3、指標&#xff1a;行政區劃代碼、地區、年份、地方財政房產稅 4、范圍&#xff1a;31省 5、指標說明&#xff1a;房產稅是對個人和單位擁有的房產征收的一種…

在Ubuntu 22.04 中安裝Docker的詳細指南

在Ubuntu 22.04 中安裝Docker的詳細指南 一、引言 Docker是一個開源的應用容器引擎&#xff0c;它可以讓開發者將應用程序及其依賴項打包到一個可移植的容器中&#xff0c;然后發布到任何流行的Linux機器上&#xff0c;也可以實現虛擬化。在Ubuntu 22.04上安裝Docker能為開發、…

macOS 使用 iconv 轉化文件編碼

文章目錄 使用方式支持的編碼類型iconv 更多用法 使用方式 iconv -f GB2312 -t UTF-8 分治算法.txt > 分治算法2.txt 支持的編碼類型 可以使用 下面命令 查看編碼類型 iconv -lPS : ISO-8859 有很多種分支&#xff0c;iconv 支持 ISO-8859-1、ISO-8859-10&#xff0c;但…

操作系統核心問題解析(目的/定位、管理思想:先描述,再組織、 庫函數與系統調用的關系)

1. 目的/定位 核心作用&#xff1a;操作系統是計算機系統的資源管理者和用戶/應用程序的服務提供者。 資源管理&#xff1a;統一管理CPU、內存、磁盤、外設等硬件資源&#xff0c;避免沖突、提高利用率&#xff08;如多任務調度、虛擬內存&#xff09;。 服務接口&#xff1a…

使用Python將視頻轉化為gif

使用Python將視頻轉化為gif 一、前言二、準備三、測試 一、前言 最近想把喜歡的視頻片段作成gif&#xff0c;就試著用Python做了下&#xff0c;感覺效果還行&#xff0c;這里做個記錄。 二、準備 先下載安裝對應的庫&#xff0c;命令如下&#xff1a; pip install moviepy …

Python模塊化設計 ——函數調用

1.以下代碼的輸出結果是()。 def young(age): if 25 <=age<=30: print(“作為一個老師,你很年輕”) elif age <25: print(“作為一個老師,你太年輕了”) elif age>=60: print(“作為一個老師,你可以退休了”) else: print(“作為一個老師,你很有愛心”) young(42) …

在 Linux下使用 Python 3.11 和 FastAPI 搭建帶免費證書的 HTTPS 服務器

在當今數字化時代&#xff0c;保障網站數據傳輸的安全性至關重要。HTTPS 協議通過使用 SSL/TLS 加密技術&#xff0c;能夠有效防止數據在傳輸過程中被竊取或篡改。本教程將詳細介紹如何在 Ubuntu 22.04 系統上&#xff0c;使用 Python 3.11 和 FastAPI 框架搭建一個帶有免費 SS…

MySQL 事務(Transaction)詳解

MySQL 事務&#xff08;Transaction&#xff09;詳解 1. 什么是事務&#xff1f; 事務&#xff08;Transaction&#xff09;是一組要么全部執行&#xff0c;要么全部回滾的 SQL 語句&#xff0c;用于保證數據一致性。事務一般用于銀行轉賬、訂單支付等操作&#xff0c;確保多個…

SPI 機制與 Spring Boot AutoConfiguration 對比解析

一、架構效率革命性提升 1.1 類加載效率躍升 Spring Boot 2.7引入的AutoConfiguration.imports采用清單式配置加載&#xff0c;對比傳統SPI機制&#xff1a; 傳統SPI掃描路徑&#xff1a;META-INF/services/** Spring Boot新方案&#xff1a;META-INF/spring/org.springfram…

【 <二> 丹方改良:Spring 時代的 JavaWeb】之 Spring Boot 中的異常處理:全局異常與自定義異常

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、開篇整…

思源配置阿里云 OSS 踩坑記

按照正常的配置IAM&#xff0c;賦予OSS權限&#xff0c;思源筆記還是無法使用&#xff0c;缺少ListBuckets權限。 正常配置權限&#xff0c;又無法覆蓋&#xff0c;因此需要手動配置權限。 {"Version": "1","Statement": [{"Effect":…