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.mzph.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":…