整理了一周近万字讲解linux基础开发工具vim,gdb,gcc,yum等的使用(上)

简介: 整理了一周近万字讲解linux基础开发工具vim,gdb,gcc,yum等的使用(上)

前言



想用linux开发一些软件等必须要会的几种开发工具是必不可少的,在yum vim gcc gdb中指令繁杂的是vim和gdb这两个工具,至于yum和gcc的指令就比较简单了。


一、yum的使用



yum是linux的软件包管理器,那什么是软件包呢?


软件包:在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装. 软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系. yum(Yellow dog Updater, Modifified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上


注意事项:关于yum的所有操作必须保证主机(虚拟机)网络畅通!!


yum工具的常用选项有:


yum install   : 表示安装软件包


yum 会自动找到都有哪些软件包需要下载, 这时候敲 "y" 确认安装.

出现 "complete" 字样, 说明安装完成.


注意:

安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.

yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外 一个软件, yum会报错.

f3312b1dd8374944a64dcd62cfdb8b41.png


在这里我以gdb为例,由于我的linux环境中已经有了gdb调试器,所以机器告诉我无需下载。


yum list  : 列出所有可供安装的软件包


软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.

"x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包. 选择包时要和系统匹配.

"el7" 表示操作系统发行版的版本. "el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6

最后一列, base 表示的是 "软件源" 的名称, 类似于 "小米应用商店", "华为应用商店" 这样的概念

5e48391adbd04c09b56a85d4bef50fd5.png


由于list显示出的包太多所以我们截取一部分。


yum list | grep xxx  :由于list显示出的安装包太多所以我们用管道的方式只筛选出我们关注的包(xxx代表包的关键字,比如要查找ls,那么xxx就是ls)


7e7d5667690844788489814fb1a79a89.png


上图是我们以ls为例


yum search : 搜索包含指定关键字的软件包


同样我们以ls为例:


b892934cd6df479abb8ed19119f16ad0.png


yum remove : 卸载指定的软件


376589721b414e888ce3605b52b24e5c.png


以gdb为例在删除的时候会询问是否删除,如果输入Y就删除了。


yum makecache : 将服务器的软件包信息缓存到本地

yum clean all : 清除缓存中老旧的头文件和软件包

yum -y update : 升级所有包的同时也升级软件和系统内核

yum -y upgrade : 只升级所有包,不升级软件和系统内核,软件和内核保持原样

以上就是yum的常用命令,命令并不多只要多练习很快就能掌握。


二、vim的使用



由于vim的模式很多在这里我们只讲解最常用的四个模式,分别是命令模式,插入模式,底行模式和替换模式


命令模式:


vim + 文件名进入vim


刚打开vim默认就在命令模式中,在命令模式中不可以直接修改代码需要输入相对应的指令才可以修改。

4c7fcbda5b594019801f9b8a578d338b.png


由于我的vim是已经配置过的所以会和大家的不一样。


插入模式:(进入插入模式需要在命令模式下按i或者a或者o还有其他进入插入模式的途径就不介绍了)


i : 光标不动进入插入模式


94701a9cbd2a44c58475faa0faef84de.png


按i后进入插入模式光标不变


a:光标向后移动一个然后进入插入模式


917194b54b6d407385a2f4bd3680867b.png

5a7af2b0299c4f53bfdf264fcedfd4d2.png


按a进入插入模式发现光标向后移了一个位置


o:光标新起一行进入插入模式


bd2e58f4596f401faf195fb2694fbe31.png

4441a974975341a38f5f590d39fd4c92.png


按o后可以看到光标新起一行进入插入模式


底行模式:(在命令模式下按shift + ; 进入底行模式)


3c9fb5b0ac4645f9a5846d214941793e.png


上面的界面就是底行模式,底行模式可以在底下的命令行输出指令来控制vim。


由于避免多开vim的情况,所以建议大家在进入底行模式前先退回到命令模式,不论在任何模式下要退回到命令模式下只需要按ESC键即可。


替换模式:(在命令模式下shift + r 进入替换模式)

2db01a3245864c54b036b327fc3fba78.png


替换模式顾名思义就是替换非常方便。


下面进入在vim中最实用的指令讲解:


底行模式下的命令:


w : 保存所修改的文件


q : 直接退出文件,如果已经修改了文件使用q会提示


wq : 保存并退出文件


! : 强制执行(与其他命令配合使用)   比如  :w ! :强制保存


set nu : 调出行号


c3a6c588197c4e278166f18a35cda742.png


set nonu : 取消行号

8f730f2bbcfa4480923fa8f0060dd037.png


! + 指令 :跳出vim显示指令

3ba18b52f65c4035bfcde2a8b27d19d9.png


比如上图的! ls  就是在vim中显示当前路径下的ls指令


vs + 文件名:分屏使用(如果没有这个文件则会创建一个文件)

0240f3ab0d2a4d83b0a2383d94beecb8.png


如上图在此路径下并没有test.h文件,在我们使用vs命令后自动给我们创建了一个.h文件并且于刚刚的test.c文件分屏使用,理论上使用vs分屏没有次数,但是如果要分好几个文件的屏那么体验会非常不好。


在分屏模式下想要关闭或者修改哪个文件就要让光标在那个文件里,所以移动光标的指令必不可少


ctrl + ww:在分屏模式下切换光标


5f52b7702e08448ab8899fb1a8a95835.png

b4da51b82f1b47639c891bdf310caf06.png


关闭哪个文件只需要让光标在哪个文件里然后在底行模式下用q或者wq关闭即可,这个操作与单个文件一样。


接下来的所有命令都在命令模式下使用:


注意:vim不支持右边的小数字键盘,所以输入数字在字母区的上面输入。


yy/nyy  : 复制当前行或者复制当前行在内的指定若干行


此操作需要与粘贴指令配合所以先介绍粘贴指令在一起演示:


p/np : 粘贴一行或者多行相同的内容到当前光标所在行之下


38b3e54926df43409fc528828828922e.png


当我的光标放在第9行时在键盘输入yy后然后直接输入p就将第九行的内容自动粘贴到下一行,如果想要复制第九行到第13行则输入5yy就是复制五行的内容然后p即可。如果想要10行一样的int i = 10那么只需要在第九行yy一下然后输入10p那么就自动粘贴了10行。


u : 撤销刚刚的操作(需要注意的是即使已经保存文件也可以撤销,但是一旦退出vim则不可以再撤销之前的命令)

38b3e54926df43409fc528828828922e.png

7d87a10d0bd74b18ae6debbdbdf22a24.png

ctrl + r  : 对刚刚进行的撤销进行撤销


f30e678c50df47cc81e2069e25db0a94.png

f162efd0adb746a9bd48b53728eaae65.png


dd/ndd : 对当前行或者当前行在内的n行的内容进行剪切


f5c231f21fec4fa7bc544dd5e617cb4f.png


比如我的光标在第9行然后键盘输入5dd则将第九行开始的后五行内容全删掉了


dd + p :dd是剪切内容p是复制内容所以dd+p可以实现内容的移动


d214be6284224cf1a7f474c573c83ad4.png

cb54627fa71147bc98472f2e5067f833.png


如图所示是使用3dd + p指令后的代码


shift + g : 将光标定位到文档最结尾

1f000a00321b4785a83c58302ad2aff1.png


gg :将光标快速定位到文档最开始


4e67cbca4f0643eea6ab1595bdabb468.png


n + shift + g :将光标定位到第n行


shift + $(实际就是$键) :将光标定位到文档行的结尾


c3f2f51a0294486d9aab97cd3a5fcc79.png


比如光标在第九行i的前面使用命令后光标到结尾


shift + ^(实际就是^):将光标定位到文档行的开始与$是一对


nw,nb : 按照单词为单位在行内进行前后移动n个单词,w向后,b向前


shift + ~ (也就是~):快速将光标指向的字符进行大小写转换


nr + 要替换的字符 : 替换n个光标(从左到右n个)所在的字符


nx : 行内向后删除n个字符


n shift x : 行内向前删除n个字符


h j k l :h:光标向左移动 j : 光标向下移动 k:光标向上移动 L :光标向右移动


以上就是vim中常用的命令及演示。


相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
2月前
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
62 1
|
2月前
|
自然语言处理 运维 开发工具
深入探讨了 NeoVim 相较于传统 Vim 的优势,包括更好的扩展性、现代化的界面和用户体验、多语言编程支持、强大的异步处理能力、更好的协作支持、持续的更新和改进、活跃的社区以及与现代开发工具的集成
本文深入探讨了 NeoVim 相较于传统 Vim 的优势,包括更好的扩展性、现代化的界面和用户体验、多语言编程支持、强大的异步处理能力、更好的协作支持、持续的更新和改进、活跃的社区以及与现代开发工具的集成。通过命令对比,展示了两者在启动、配置、模式切换、移动编辑、搜索替换、插件管理、文件操作、窗口缓冲区管理和高级功能等方面的差异。总结部分强调了 NeoVim 在多个方面的显著优势,解释了为什么越来越多的运维人员选择 NeoVim。
115 3
|
5月前
|
NoSQL Linux C语言
Linux GDB 调试
Linux GDB 调试
77 10
|
5月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
219 3
|
5月前
|
NoSQL Linux 编译器
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
如何配置环境并使用QEMU虚拟机结合GDB进行Linux内核代码的断点调试,包括安装QEMU、交叉编译工具链,编译内核以及通过GDB远程连接进行调试的详细步骤。
271 0
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
|
7月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
61 1
|
7月前
|
NoSQL 编译器 Linux
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
117 0
|
7月前
|
缓存 人工智能 Linux
【Linux】--- 详解Linux软件包管理器yum和编辑器vim
【Linux】--- 详解Linux软件包管理器yum和编辑器vim
106 0
|
7月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
41 0
|
7月前
|
人工智能 Linux 开发工具
Linux基础——Linux开发工具(上)_vim
Linux基础——Linux开发工具(上)_vim
36 0