Linux探秘坊-------3.开发工具详解(1)

embedded/2025/1/23 7:18:36/

1 初识vim编辑器

创建第一个vim编辑的代码

在这里插入图片描述

1.新建文件

在这里插入图片描述

2.使用vim打开

3.打开默认是命令模式,写代码需要在屏幕上输出“i”字符

  • 1.写完代码后要按Esc键退出到指令模式
  • 2.再按shift+:+wq即可保存并退出vim

(因为不支持鼠标,通常 使用键盘上的箭头 移动光标进行编辑)
在这里插入图片描述

4.cat进行查看

在这里插入图片描述

5.gcc编译文件

在这里插入图片描述
运行成功

2. vim的多模式

1.模式切换

模式切换如图:
在这里插入图片描述
结论:
在这里插入图片描述
命令模式可以理解为Windows系统中的鼠标,可以快速,高效得进行编程

2.命令补充

1.与光标有关的命令
  • n+gg :光标移动至第n行(任意行)
  • shift+g :光标移动至 最后一行
  • shift+$ : 光标移动至所在行的最后
  • shift+^ : 光标移动至所在行的最前
  • h,j,k,l :上下左右移动(h左,l右,j下,k上)
  • w,b: 光标按单词间隔进行行列移动(w向后,b向前)
  • n+ x :在光标所在处 向后删除 n个字符
  • n+ X :在光标所在处 向前删除 n个字符

2.其他命令(命令模式)
  • yy :复制当前一行
  • n+ yy :从当前行开始复制n行代码
  • p :将复制的内容黏贴至当前行的下一行
  • u :撤销上一步操作
  • ctrl+r :对u进行撤销,即恢复操作
  • n+ dd :剪切或删除行
  • shift+r:进入替换模式,可以重新写当前行的代码
3.其他命令 (底行模式)
  • shift+:+set nu: 调出行号(底行模式)
  • “/+字符串” +n : 查找字符串,按n找到下一个字符串
  • !gcc+文件名 : 执行正在写的程序文件,生成可执行程序

在这里插入图片描述

在这里插入图片描述

  • !./a.out (生成的可执行程序) : 执行程序
  • 在这里插入图片描述
  • vs + 文件名(实现分屏操作
  • 在这里插入图片描述
  • ctrl+ww,切换光标至另一个界面(可以用来复制其他文件中的内容配合“yy”)

在这里插入图片描述

4.补充命令
    1. ctrl+v(进入视图模式)->hjkl(移动光标,使其覆盖部分内容)->shift+i->“//”(插入双斜杠,也可以尝试插入别的字符)->esc(回到命令模式)

批量化注释

  • 2.ctrl+v(进入视图模式)->hjkl(移动光标,使其覆盖部分内容)->d

批量化删除注释

  • 3.shift+:->%s/xxx/aaa/g

将代码中的xxx全部换成aaa

3.vim的简要配置

1.进入家目录 cd ~

在这里插入图片描述

2.创建 .vimrc文件 catch .vimrc

在这里插入图片描述

3.vim .vimrc 并在里面写入想要的指令(可以自行去网上搜索)

我这边写入 set nu(显示行数)和 set mouse=a(支持鼠标)

4.再次打开test.c

在这里插入图片描述
发现已经添加了行号。

4.程序翻译-------gcc/g++

1.预处理(宏替换+去注释+条件编译+头文件展开)

举例:
在这里插入图片描述
使用gcc -E test.c -o test.i

  • -o:表示我们要形成的文件的名称(这里即test.i)
  • gcc -E:表示从现在开始 只要预处理完成就停下来

用vim打开test.i并与test.c对比:
在这里插入图片描述
宏替换+去注释+头文件展开全部完成)

2.编译(生成汇编)

gcc -S test.i -o test.s

  • -o:表示我们要形成的文件的名称(这里即test.s)
  • gcc -E:表示从现在开始 只要编译完成就停下来

在这里插入图片描述

3.汇编(生成机器可识别代码)

gcc -c test.i -o test.o

  • -o:表示我们要形成的文件的名称(这里即test.s)
  • gcc -c:表示从现在开始 只要汇编完成就停下来

在这里插入图片描述

4.链接(生成可执行文件或库文件)

在这里插入图片描述

gcc test.o -o testtest就是可执行的文件

5.补充知识点sudo(添加用户至白名单)

1.ls -l /etc/sudoers

在这里插入图片描述

2.su(切换至root)
3.vim /etc/sudoers

在这里插入图片描述
发现白名单里只有root,我们可以自行添加用户:
在这里插入图片描述

4.sudo验证

在这里插入图片描述

成功使用sudo,代表白名单配置成功。

在这里插入图片描述


http://www.ppmy.cn/embedded/156251.html

相关文章

树莓集团 “产学研用” 一体化模式成效显著,多方联合推动产业升级

在当今竞争激烈的产业环境中,树莓集团以其独特的 “产学研用” 一体化模式脱颖而出,成效显著,成功推动产业升级,成为行业发展的典范。 树莓集团深知科研是产业发展的源头活水。因此,积极与各大高校、科研机构建立紧密…

CSRF漏洞学习总结

一、什么是CSRF漏洞? CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种网络攻击,它利用受害者在受信任网站上的已认证会话,来执行非预期的行动。这种攻击的核心在于,攻击者能够诱使受害者…

html、js、css实现爱心效果

好的!我们可以进一步美化这个爱心效果,增加更多动态和视觉吸引力。以下是改进后的代码,包括以下功能: 1. 背景渐变:添加动态背景渐变效果。 2. 爱心阴影:为爱心添加阴影,使其更具立体感。 3. 随…

springboot使用Redis发布订阅(Pub/Sub)实战

一、基本介绍 Redis 发布/订阅是一种消息传模式,其中发送者发送消息,而接收者(订阅者)接收消息。传递消息的通道称为channel。 例如下图的工流程,当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这…

博客之星2024年度总评选—我的技术总结之旅

在踏入2024年的尾声之际,回望过去一年的技术探索与实践,心中充满了感慨与收获。作为一名技术博主,我深知持续学习与分享的重要性,因此,本次我选择以“技术总结类”为主题,来盘点我在特定技术领域——人工智…

顺序表和链表(详解)

线性表 线性表( linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线。…

c++面试题,请使用STL的std::remove_if算法删除std::vector<int>容器中大于5的数字

请使用STL的std::remove_if算法删除std::vector容器中大于5的数字 在C 中, std::remove_if 算法并不会真正从容器中删除元素, 而是将满足条件的元素移动到容器末尾,并返回一个指向新的逻辑结束位置的迭代器。 你需要使用容器的 erase 成员函…

激光雷达和相机早期融合

通过外参和内参的标定将激光雷达的点云投影到图像上。 • 传感器标定 首先需要对激光雷达和相机(用于获取 2D 图像)进行外参和内参标定。这是为了确定激光雷达坐标系和相机坐标系之间的转换关系,包括旋转和平移。通常采用棋盘格等标定工具&…