Linux环境基础开发工具使用——yum and vim

        本篇将会介绍平时在Linux中开发常用到的一些工具,其中包括:软件包管理器 — yum,Liunx中的开发工具。具体的介绍了 yum 的相关操作以及 yum 源,同时还介绍了 windows与虚拟机如何进行的关联。然后对Liunx中的开发工具进行了详细的介绍,还详细的介绍了 vim 中的快捷命令集。目录如下:

目录

1. Linux软件包管理器——yum

1.1 yum相关操作 

1.2 yum软件源

1.3 windows与虚拟机之间的文件关联

2. Linux开发工具——vim

 2.1 vim的基本概念与基本使用方法

2.2 正常模式命令集

2.3 末行模式命令集

2.4 进行批量化注释

1. Linux软件包管理器——yum

        对于软件包管理器——yum,可以理解为Linux中的一个软件应用商店。但是他与Windows上的软件应用商店又存在一定的区别,将会在下文中一一进行解释。

        首先介绍什么是软件包:在Linux下安装软件,通常的办法是下载程序的源代码,然后进行编译,形成一个可执行程序。但是这样太麻烦,特别是对一些不怎么熟悉Linux的新用户不怎么友好,所以就有人将常用的软件提前编译好,做成软件包(类似Windows上的安装程序)放在一个服务器上,通过软件包管理器yum可以很方便的获取这个编译好的软件包,直接将其安装在Linux系统中。

        软件包和软件管理器yum的关系,好比 “App” 和 “应用商店” 的关系。

        yum(Yellow dog Updater,Modified)是Linux下的非常常用的一种软件包管理器。主要应用在Fedora, RedHat,Centos等发行版上。
        注:使用 yum 下载软件包,需要保证网络通畅。之后会详细介绍为什么需要网络通畅。

1.1 yum相关操作 

        对于 yum 的相关操作,首当其冲需要介绍的就是 yum 的搜索功能,我们需要使用 yum 去搜索各种各样的软件包,其使用语法为:

        yum list | grep xxx   (筛选出与xxx相关的一些软件包)

        由于包的数量非常之多,所以需要我们使用 grep 命令筛选出我们关注的包,如下图:

        当我们输入 yum list | grep sl 时,系统就会自动筛选出和所有存在关键字 sl 的软件包,对于蓝框框住的 el7 表示这是在 centos7 版本下的软件。而右边橙框框住的表示是软件包提供方。软件包跟的后缀:x86_64 表示64位系统的安装包,i686 后缀表示32位系统安装包,选择包时要和系统匹配。

        接下来具体讲解 yum 怎么对软件包进行安装,首先先介绍 yum 的安装与删除语法:

(sudo) yum install (-y) xxx //安装,普通用户下需要执行sudo
(sudo) yum remove (-y) xxx //删除

        对于 yum 的安装,需要注意的是,使用 yum 进行软件安装需要将用户切换到 root 账号,或者使用 sudo 进行安装。使用样例如下:

        当我们输入 yum install sl 时,会需要我们进行输入 y 确认或者输入 n 否认,当我们输入 yum install -y sl 时,就不会弹出这个界面,将直接进行安装。(安装的这个软件包其实是一个跑火车的小程序,如下)

        当然我们也可以使用 yum 来对软件包进行删除,如下:

1.2 yum软件源

        在介绍软件源前,我们先简单的介绍一下软件包提供方,如下:

        在图中一共有 base 和 epel 这两个软件提供方,其中对于 base 软件包提供方来说,通常提供的软件包都是稳定的软件,经过长期验证的软件包,使用时不会出问题;而对于 epel 软件提供方来说,通常提供的软件包都是一些相对来说不怎么成熟的软件包,有可能在使用的过程中会出现 BUG。当然,还有很多其他的软件包提供方,在这就不一一介绍了。

        对于 yum 软件包管理器来说,我们的软件需要在哪进行下载呢?答案是在Linux下内置得有对应的软件源,当我们执行对应的 yum 指令时,系统会自动在对应的软件源下去寻找这个软件,然后找到该软件包进行安装。

        上图就算提供的文件目录下的文件就是我的Linux机器提供的软件源,其中 CentOS-Base.repo 就是 base 软件包提供方提供的软件源,当我们打开这个文件,内容如下:

        如上图,当我们打开 CentOS-Base.repo 文件,发现里面存在一些网站,对于这些网站就是提供软件包的地方也就是软件源。

        现在我们来看看 epel 软件提供方提供的软件源,epel.repo,当我们打开该文件,得到的内容如下:,

        这是华为提供的扩展源,对于 CentOS-Base.repo 软件源提供的软件源一般都是较为稳定的软件包,若想要能够安装更多的软件包,我们可以在配置一个软件源:epel.repo。安装命令如下:

        (对于其他的扩展源来说,若是使用国内的云服务器可能自动就配置得有,但是如果安装的是虚拟机,软件源很内的链接可能来自国外,在国内安装软件包的速度可能会很慢,若未配置其他软件源的系统,建议配置,查看软件源目录的命令:ls /etc/yum.repos.d/

1.3 windows与虚拟机之间的文件关联

        平时使用Linux都是在虚拟机或者云服务器下使用,但通常使用得更多的还是windows,当我们需要将Linux中的文件与Windows中的文件进行关联时,我们可以在Linux下运行以下命令:

yum install -y lrzsz

        安装该命令之后,我们就可以开始进行对应的文件传输了。如下:

        从windows传入Linux中,一共有两种方法:直接拖拽、命令行输入命令。

        直接将windows下的文件拖拽到Linux中的命令行下,就可以开始传输了。

        输入命令:rz -E 命令,也可以进行文件传输。

        从Linux中将文件传输到windows下,输入命令:sz xxx(文件名)

2. Linux开发工具——vim

        在Linux下我们通常使用的开发工具是 vim,也就是说 vim 就是Linux下的IDE开发工具,在前两篇文章中,我们使用 nano 来对代码进行编辑代码,但其实这个工具并不适合用于编辑代码,nano 是一个文本编辑器,它是一个轻量级的终端文本编辑器,适用于在终端下编辑文本文件,所以并不适合用于编辑代码,当然也可以用于编辑。

 2.1 vim的基本概念与基本使用方法

        在 vim 下一共有三种模式:正常模式、插入模式、末行模式。各模式的功能区分如下:

        正常/普通/命令模式(normal mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

        插入模式(insert mode):只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
        末行模式(last line mode):文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

        对于 vim 的使用方法为:vim xxx(文件名),当我们进入该文件后,就可以对该文件进行编辑了。

        当我们使用 vim 命令进入一个空文件时,进入就是这个样子,什么都没有,一切都需要由我们自己填写,需要我们一个字母一个字母的敲。但也并不是进入之后就直接可以开始敲代码了,还需要其他的一些操作。

        在 vim 下的三种模式:正常模式、插入模式、末行模式。之间的切换如下:

      (vim 进入文件时,默认是以正常模式进入的)

        正常模式 切换为 插入模式:

输入:a   //会在当前位置的后一个位置开始输入
输入:i   //直接在当前位置进行输入
输入:o   //会在当前位置的下一行输入

        插入模式 切换为 正常模式:

输入:ESC

        通常插入模式切换正常模式是为了执行一些快捷命令。

        正常模式 切换为 末行模式:

输入:shift + ; //其实就是输入:

2.2 正常模式命令集

        在正常模式下,会存在许多的快捷命令方便我们操作,将会在以下列举出最常用的一些命令。

        移动光标命令集:

1.vim可以直接使用键盘上的上下左右方向键来移动光标,但正规的vim使用的是小写字母:h、j、k、l,分别控制光标的左、下、上、右;
2.按G[shift+g]:移动到文章最末尾处;
3.按$[shift+4]:移动光标到当前所在行的“行尾”;
4.按^[shift+6]:移动光标到当前所在行的“行首”;
5.按W[shift+w]:将光标移动到下一个字的开头;
6.按e:光标移动到下个字的字尾;
7.按b:使光标回到上一个字的开头;
8.按n+l:将光标移动到第n个位置;
9.按gg:将光标移动到文本开始位置;
10.按[ctrl+b]:屏幕往后移动一页;
11.按[ctrl+f]:屏幕往前移动一页;
12.按[ctrl+u]:屏幕往后移动半页;
13.按[ctrl+d]:屏幕往前移动半页;
14.按[ctrl+g]:列出光标所在行;
15.按[n+G]:将光标跳到第n行

        删除文字命令集:

1.按x:删除光标所在位置的字符
2.按n+x:删除光标所在位置后的n个字符
3.按X:删除光标所在位置的前一个字符
4.按n+X:删除光标前的n个字符
5.按dd:删除光标所在行
6.按n+dd:从光标所在行开始删除n行

        复制命令集:

1.按yw:将光标所在之处到字尾的字符复制
2.按n+yw:复制n个字
3.按yy:复制当前行
4.按n+yy:复制光标开始处的n行
5.按p:将复制的字符复制到光标处

        替换命令集:

1.按r:替换光标所在处的字符
2.按R:替换光标所到之处的字符,知道按下ESC为止
// 可以将其看作insert的另一种模式

        撤销操作集:

1.按u:撤销前一步的操作
2.按ctrl+r:将撤销的恢复

        更改命令集:

1.按c+w:更改光标所在位置直到字尾处的字符(从光标位置开始删除到字尾,然后在从键盘读入)
2.按c+n+w:更爱光标位置之后的n个字符

2.3 末行模式命令集

        在使用末行模式前,记得退出到正常模式,因为只有正常模式才可以进入末行模式。由于末行模式的命令相对正常模式较少,就不将其分类了,直接在以下列出。

1.set nu:会在文件中列出每一行的行号
2.数字n+enter:将光标跳到第n行
3./关键字:会在文章中找出关键字,并将其高亮
4.w:保存文件
5.q:退出文件
6.wq:保存文件并退出
7.q!:强制退出

        以上就是末行模式常使用的命令,但是末行模式还有其他的一些功能,如,当我们在编写代码时,需要打开另一个头文件或者其他文件一同开发,我们可以使用命令:

        vs filename   // 当文件不存在时,会新建文件,文件存在则直接打开

如下:

        当我们需要退出文件时,按照退出命令就可以退出了,退出的文件为当前光标所在位置的文件。若我们不想退出文件,只切换光标到另一个文件,可以执行命令:

        ctrl+ww  // 会按照顺序依次切换光标位置

2.4 进行批量化注释

        以上给出了一些基本的 vim 指令,但是当我们想要对我们的代码进行批量化注释的时候,我们又该怎么操作呢?这个操作还是存在一定的难度,如下:

        1. 按:ctrl+v  //进入visual block模式

        2. 按:j 或者 [shift + n +g]:选中n行

        3. 按:shift+i :进入insert模式

        4. 输入 // 注释符,然后连续按两下 ESC,就可以得到多行注释了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490353.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

集合(下)Map集合的使用

文章目录 前言一、Map接口二、Map接口的实现类 1.HashMap类2.TreeMap类总结 前言 Map集合没有继承Collection接口,不能像List集合和Set集合那样直接使用Collection接口的方法。Map集合其自身通过以key到value的映射关系实现的集合,也有相应的许多方法。类…

超详细SpringMVC源码剖析

整体流程图 1.自定义视图(63~66) 视图解析过程 1.先到DispatcherServlet中央控制器, 根据视图解析的 优先级 执行对应的 视图解析器 Nullable protected View resolveViewName(String viewName, Nullable Map<String, Object> model,Locale locale, HttpServletReque…

【C语言】【Leetcode】70. 爬楼梯

文章目录 题目思路&#xff1a;简单递归 > 动态规划 题目 链接: link 思路&#xff1a;简单递归 > 动态规划 这题类似于斐波那契数列的算法&#xff0c;结果其实就是到达前一步和到达前两步的方法之和&#xff0c;一直递归到n1和n2时就行了&#xff0c;但是这种算法有个…

Fiddler抓包工具之fiddler的常用快捷键

一、常用三个快捷键 ctrlX :清空所有记录 CtrlF&#xff1a;查找 F12&#xff1a;启动或者停止抓包 使用 QuickExec Fiddler2 成了网页调试必备的工具&#xff0c;抓包看数据。Fiddler2自带命令行控制。 fiddler 命令行快捷键&#xff1a;ctrl q &#xff0c;然后 输入 help…

linux C:变量、运算符

linux C 文章目录 变量运算符 一、变量 [存储类型] 数据类型 标识符 值 标识符&#xff1a;由数字、字母、下划线组成的序列&#xff0c;不能以数字开头。 数据类型&#xff1a;基本数据类型构造类型 存储类型&#xff1a;auto static…

碳课堂|什么是碳资产?企业如何进行碳资产管理?

碳资产是绿色资产的重要类别&#xff0c;在全球气候变化日益严峻的背景下备受关注。在“双碳”目标下&#xff0c;碳资产管理是企业层面实现碳减排目标和低碳转型的关键。 一、什么是碳资产&#xff1f; 碳资产是以碳减排为基础的资产&#xff0c;是企业为了积极应对气候变化&…

idea中Git项目遇到“Filename too long”错误 与 配置Git的ssh证书

一&#xff1a;“Filename too long”问题解决办法 错误信息&#xff1a; fatal: cannot create directory at xxxx: Filename too long warning: Clone succeeded, but checkout failed. You can inspect what was checked out with git status and retry with git restore …

java算法第32天 | 贪心算法 part02 ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II 本题中理解利润拆分是关键点&#xff01; 不要整块的去看&#xff0c;而是把整体利润拆为每天的利润。假如第 0 天买入&#xff0c;第 3 天卖出&#xff0c;那么利润为&#xff1a;prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (prices[…

[医学分割大模型系列] (3) SAM-Med3D 分割大模型详解

[医学分割大模型系列] -3- SAM-Med3D 分割大模型解析 1. 特点2. 背景3. 训练数据集3.1 数据集收集3.2 数据清洗3.3 模型微调数据集 4. 模型结构4.1 3D Image Encoder4.2 3D Prompt Encoder4.3 3D mask Decoder4.4 模型权重 5. 评估5.1 评估数据集5.2 Quantitative Evaluation5.…

李宏毅【生成式AI导论 2024】第1讲:生成式AI是什么?

什么是人工智能? 人工智慧可以说是一个目标,是一个我们想要达到的目标。它不是一个单一的技术,并没有哪一个技术叫做人工智慧,人工智慧是一个目标。 什么是生成式人工智能? 生成式人工智慧是要机器产生复杂而有结构的物件。比如说文章,文章也有一连串的文字所构成的。比…

[蓝桥杯 2023 省 A] 颜色平衡树:从零开始理解树上莫队 一颗颜色平衡树引发的惨案

十四是一名生物工程的学生&#xff0c;他已经7年没碰过信息学竞赛了&#xff0c;有一天他走在蓝桥上看见了一颗漂亮的颜色平衡树&#xff1a; ​​​​​​​[蓝桥杯 2023 省 A] 颜色平衡树 - 洛谷 十四想用暴力解决问题&#xff0c;他想枚举每个节点&#xff0c;每个节点代表…

死锁-写一个死锁的例子

死锁-写一个死锁的例子 什么是死锁死锁产生的条件如何避免死锁死锁预防死锁避免死锁检测死锁解除鸵鸟策略 手写一个死锁的例子 https://blog.51cto.com/u_16213642/8352155 什么是死锁 在两个或者多个并发进程中&#xff0c;如果每个进程持有某种资源而又等待其它进程释放它或…

代码随想录算法训练营第三十五天|860. 柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球

860. 柠檬水找零 题目 在柠檬水摊上&#xff0c;每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品&#xff0c;&#xff08;按账单 bills 支付的顺序&#xff09;一次购买一杯。 每位顾客只买一杯柠檬水&#xff0c;然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾…

C语言例4-8:格式字符c的使用例子

代码如下&#xff1a; //格式字符c的使用例子 #include<stdio.h> int main(void) {char c A;int i 65;printf("c%c,%5c,%d\n",c,c,c);printf("i%d,%c\n",i,i);return 0; } 结果如下&#xff1a;

22.WEB渗透测试-BurpSuite(一)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;21.WEB渗透测试-HTTP协议&#xff08;下&#xff09;-CSDN博客 工具的使用需要先搭建靶场…

水牛社:宝妈副业,不仅赚钱更成长:一段充实之旅

大家好&#xff01;作为一名90后的全职宝妈&#xff0c;今天非常荣幸能够与大家分享我的互联网赚钱经验。趁着宝宝午睡的宝贵时光&#xff0c;我抓紧写下了这篇文章&#xff0c;虽时间紧凑&#xff0c;但我会力求内容清晰明了。 大约从2022年4月开始&#xff0c;我踏上了互联网…

天工AI搜索引擎

相信正在看autosar架构相关内容的人来说&#xff0c;对于autosar相关知识或者配置项的生涩知识点可谓是苦之久矣&#xff0c;这个时候一个好的搜索引擎能带来的帮助太大了&#xff0c;不管是平时百度还是看文档都需要大量的时间去检索自己真正想知道的信息&#xff0c;偶然间发…

Chromium 通过IDL方式添加扩展API,并且在普通网页也可以调用

先严格按照Chromium 通过IDL方式添加扩展API - 知乎、chromium 41 extensions 自定义 api 接口_chromium自定义扩展api-CSDN博客 里提到的方式&#xff0c;加入扩展api。然后最关键的地方来了&#xff1a; 到src\extensions\renderer\native_extension_bindings_system.cc \sr…

Springboot+vue的企业质量管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的企业质量管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09…

堆排序(六大排序)

前面博客已经分享过堆的知识了&#xff0c;今天我们来分享堆排序。 堆排序 堆排序(Heapsort)是指利用堆积树&#xff08;堆&#xff09;这种数据结构所设计的一种排序算法&#xff0c;它是选择排序的一种。它是通过堆来进行选择数据。 ★★★需要注意的是排升序要建大堆&#…