Linux环境基础开发工具使用篇(一) yum 与 vim

目录

一、软件包管理器 yum

1. yum的概念和对yum整个生态的理解

Linux安装软件的三种方式:

对yum和yum整个生态的理解:

2.yum的使用

①yum源

②yum安装软件

③yum源更新

二、文本编辑器 vim

1.vim常用模式

2.详谈每种模式:

(1)插入模式

(2)底行模式

①退出vim

②行号

③不退出vim执行各种指令

④搜索

(3)命令模式:

①光标的上下随机定位

②光标的左右随机定位

③方向键的控制

④赋值粘贴删除剪切

⑤撤销操作

⑥行内局部性操作

⑦搜索

(4)替换模式

(5)视图模式

①注释与去注释

②多文件编辑

小细节:

3.vim配置

(1)基础配置

(2)直接自动化部署配置


一、软件包管理器 yum

1. yum的概念和对yum整个生态的理解

Linux安装软件的三种方式:

1).源代码安装

尽量规避,因为需要自己去编译,可能存在各种问题,不推荐这种方法

2).rpm包安装

有人已经把要用的软件编译打包好了,形成rpm, 使用rpm直接把对应的软件装上去,这种方法也不推荐,因为对于小白用户来说,不一定知道要下载哪些安装包,也不知道哪个软件包是对的,再者一些文件是需要依赖于其他文件才能跑起来,所以也不推荐

补充:安装软件的本质就是把对应的可执行程序拷贝到指定的目录下

3).yum一键式安装

对一个软件的生命周期的管理,从安装到查找到卸载都用yum一个工具, yum具体是什么,我们下文介绍~

对yum和yum整个生态的理解:

1). yum的基本定位

早期下载软件需要去对应网站上查找下载,下下来的软件容易出问题,后来手机上有了应用商店,把大部分软件都集合在了应用商店里面,相当于在用户和开发软件的公司之间多了一个手机厂商,手机厂商会对软件做甄别,有问题的或者评价不太好的软件手机厂商可以直接下架,因此用户下载软件更加安全便捷高效~

而手机上安装软件找应用商店,Linux中安装软件找yum, 所以yum和手机管家的作用是一样

2). 软件在没有下载安装之前存放在哪?? 是已经在手机上了???

软件在没有下载之前是放在手机厂商提供的服务器上的,肯定没在手机上,要不然内存早都爆了,开发软件的公司将软件开发好之后,经过审核没有问题,就上线到服务器上了~

3). 手机厂商和软件公司提供服务器和开发app是可以赚钱的,linux是开源的,那么服务器谁提供??对应的软件又是谁提供??

就是因为Linux是开源的,所以被各大公司广泛选择,也有非常庞大的社区,评价一款操作系统不仅要从操作系统本身的性能出发,还要看社区的活跃度,官方文档是否齐全以及配套的软件等等,开源这个特性吸引了一大批人投身于linux的开发和维护当中,这些人既有写操作系统的,也有写软件的,而各大公司都在使用Linux操作系统,因此会有很多公司捐赠服务器以及劳动力等,所以开源其实是一种新的商业模式~

4).用yum下载软件的时候怎么知道下载的软件去哪找??

yum相关的配置文件中提供了各种含了要下载软件的地址,访问外网的速度比较慢,国内提供了各种镜像源,比如清华大学镜像源,163镜像源,网易镜像源,我们就可以直接去镜像源查找就就行

2.yum的使用

①yum源

②yum安装软件

yum list 指令会把所有的软件罗列出来,太多了,我们此处就不演示了~

yum list | grep sl  在远程仓库做搜索,搜索包含 sl 关键字的软件, 太多了,我们此处也就不演示了

总结:

查软件 yum list | grep “xxx”

装软件 yum install xxxx

卸载软件 yum remove xxxx

强制卸载软件了(系统不和用户交互): yum remove -y sl

强制安装软件(系统不和用户交互): yum install -y sl

③yum源更新

yum去哪里下载软件,主要是由CentOS-Base.repo 这个仓库告诉我们去哪下载的,所以更新yum源其实就是用包含国内下载链接的仓库文件替换同类型文件即可!!!

1、下载wget工具 yum install –y wget

2、进入yum源配置文件所在文件夹  cd /etc/yum.repos.d/

3、备份本地yum源  mv CentOS-Base.repo CentOS-Base.repo_bak

4、wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

5、清理缓存 yum clean all

6、重建缓存 yum makecache

二、文本编辑器 vim

vim是Linux下的一款多模式的文本编辑器,类似于windows下的记事本,当然比记事本功能强大的多,可以认为vim相当于vscode, 核心功能就是编写代码

1.vim常用模式

"铁三角" 模式, 这三种模式是我们最常用的三种模式

2.详谈每种模式:

注意下面的操作都是对应于具体的模式的,首先要分清楚自己在哪一种模式下操作~

查看vim有哪些模式:

(1)插入模式

进入插入模式就可以直接写代码了,因此没有什么要展开的地方~

(2)底行模式
①退出vim

q-退出,w-保存写入内容,wq,保存并退出,q/w/wq后均可加 !,表示强制退出

当我们写入新的内容之后,如果没有保存直接退出,系统会提示没有保存,因此无法退出,此时可以强制加 !

有些系统配置文件不允许我们去修改,因此wq也无法保存退出,此时加 !强制保存退出

②行号

设置行号: set nu  /  set number

取消行号: set nonu  / set nonumber

③不退出vim执行各种指令

! 指令

④搜索

搜索关键字会将关键字高亮出来,/key 向前搜索key, ?key 向后搜索Key, 然后按n, 查找下一个

(3)命令模式:

键盘比鼠标先产生,命令模式的本质就是在没有鼠标的情况下完成对代码批量化的复制粘贴删除剪切等功能,这也是命令模式的核心作用和时代背景,而命令模式下最重要的就是光标了,光标在哪,我们就操作的是哪个地方~

①光标的上下随机定位

gg: 光标定位到当前文件第一行

G:光标定位到当前文件最后一行

n+G: 光标定位到当前文件第n行

②光标的左右随机定位

^:光标定位到当前行的开始

$:   光标定位到当前行的结尾

^和$就可以限定一行,这两个符号被称为锚点符号

③方向键的控制

 h 左     j 下     k 上     l 右

有时 h, l 左右操作起来太麻烦了,只能一个一个字符的移动, 而w, b, e则是以单词为单位移动

w: 向后移动,遇到单词,跳过单词,来到单词首字母,支持跨行

b:  向前移动,遇到单词,跳过单词,来到单词首字母,支持跨行

e:  向后移动,遇到单词,来到单词的最后一个字母,支持跨行

④赋值粘贴删除剪切

yy: 复制当前行

p: 粘贴已复制内容

n + yy: 复制从当前行开始的n行

n + p :  将复制内容粘贴n次

dd: 删除当前行

n + dd: 删除从当前行开始的n行

n + dd 搭配p使用: 剪切从当前行开始的n行

yw: 复制当前光标所在单词

⑤撤销操作

u: 撤销上一次操作

ctrl+r: 撤销"撤销"操作

再次u, 就可以撤销"ctrl+r"的操作,然后循环往复~

⑥行内局部性操作

~: 大小写转化

r:替换光标所在字符(输入r之后,输入要替换成为的字符即可替换)

n+r: 用一个字符替换从当前光标所在字符向后的连续n个字符

x:删除光标所在字符

n+x:删除从当前字符开始向后的连续n个字符

X:删除当前光标所在位置的前一个字符
n+X:删除当前光标所在位置的前面n个字符

⑦搜索

#: 搜索当前光标所在单词,按n可以找下一个同名单词

(4)替换模式

命令模式->替换模式: ctrl + r

替换模式->命令模式: Esc

在替换模式中,可以在不用删除字符的前提下直接将光标所在字符替换成键盘输入字符

(5)视图模式

命令模式->视图模式: ctrl + v

视图模式->命令模式: Esc

①注释与去注释

注释:  j / k 两个按键上下选中区域  ->  shift + i ->  //  -> esc

去注释: j/k两个按键上下选中区域, h/l选中左右区域  ->  d

②多文件编辑

vim是一款支持多文件编辑的文本编辑器,因此在实际开发的时候哦可以同时打开多个文件,同时操作,类似vs下的同一项目的多文件

光标在哪一个文件,目前操作的就是哪个文件,退出时退的就是哪个文件

ctrl + ww, 可以进行光标在文件之间的切换

小细节:

上次退出时光标在vim的哪一行,下次进入之后还在那一行

假如代码中有一个语法错误,我们在打开文件的时候就可以直接将光标定位到该位置

3.vim配置

(1)基础配置

vim配置,核心就是将配置选项添加到.vimrc这个文件里面
vim在启动的时候,会自动扫描当前用户的家目录下的.vimrc文件,让.vimrc内部的选项生

可以发现,下次再vim test.c 时,默认就带上了行号

关于更多的选项,大家可以上网去搜索,当然还有一些插件,这里就不展开介绍了,因此有下面自动化部署配置更快捷的方案

(2)直接自动化部署配置

如何自动化部署配置vim

只需要粘贴下面这段脚本即可完成配置~

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

这段脚本配置出来的vim默认缩进是2个字符,如果想要改成4个字符,只需要如下操作即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识融合:构建、应用与挑战

目录 前言1 知识图谱构建的挑战1.1 异构性挑战1.2 知识体系复杂性 2 知识图谱应用的挑战2.1 信息交互的普遍性2.2 映射的生成问题 3 异构的原因3.1 语法、逻辑和原语异构3.2 模型异构与概念化 4 知识图谱数据的特点4.1 形式灵活与可扩展性4.2 含有丰富语义与可推理性 5 知识融合…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第6章 逻辑斯谛回归与最大熵模型(1)6.1 逻辑斯谛回归模型

文章目录 第6章 逻辑斯谛回归与最大熵模型6.1 逻辑斯谛回归模型6.1.1 逻辑斯谛分布6.1.2 二项逻辑斯谛回归模型6.1.3 模型参数估计6.1.4 多项逻辑斯谛回归 《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第3章 k邻近邻法 《统计学习…

2024年网络安全就业宝典

国际研究机构Gartner会在每年10月份左右发布下一年度的战略发展趋势预测,并在次年3月左右发布和网络安全相关的趋势预测。绿盟科技通过将近3年的趋势预测进行分组对比分析后发现,除了众人皆知的AI技术应用外,数据模块化、身份优先安全、行业云…

手写RPC框架

RPC框架核心组件 对于RPC框架简洁模式下,主要有以下角色,暂且抛开心跳机制以及负载均衡等复杂策略,我们先来自己实现一个RPC框架,后面我们再深入理解。 注册中心 RegisterServiceVo package com.cover.rpc.remote.vo;import …

【PCL】(九)点云体素下采样

&#xff08;九&#xff09;Filtering 体素下采样 点云样例&#xff1a; https://raw.github.com/PointCloudLibrary/data/master/tutorials/table_scene_lms400.pcd 以下程序实现对读取的点云进行体素下采样&#xff0c;并将得到的点云保存。 voxel_grid.cpp #include <…

CSS是一门需要单独学习的技术吗?

CSS (Cascading Style Sheets) &#xff0c;做前端开发的人都很清楚&#xff0c;因为这是他们的一项必不可少的技能。我以前也是知道CSS&#xff0c;但从来没有单独学习过&#xff0c;认为就它只是用来渲染网页的表现层效果&#xff0c;定制页面和内元素的布局、颜色和字体等&a…

QT 应用中集成 Sentry

QT 应用中集成 Sentry QT应用中集成 SentrySentry SDK for C/C注册 Sentry 账号QT 应用中集成 Sentry触发 Crash 上报 QT应用中集成 Sentry Sentry 是一个开源的错误监控和日志记录平台&#xff0c;旨在帮助开发团队实时捕获、跟踪和解决软件应用程序中的错误和异常。它提供了…

【ADI 知识库】 AN-1354:集成式ZIF、RF至比特、LTE、广域接收机分析和测试结果

官方链接&#xff1a; https://www.analog.com/cn/resources/app-notes/an-1354.html 简介 本应用笔记参考了3GPP TS 36系列文件和ADI公司的多种数据手册、特性标定报告和实验室测试结果。本文重点关注基于集成式零中频(ZIF)、RF至比特、IC (AD9371)的多载波广域LTE接收机的性…

ICA:独立成分分析

1.意义 两个假设&#xff1a;一个是假设源信号是相互统计独立的,另一个是假设己知源信号的统计分布特征。 另一个假设是信号的非高斯性,现实世界的许多信号,诸如绝大多数的语音信号和图像信号即是服从非高斯分布的这个假设的可应用性,带来了独立成分分析的重要特征,即实际信号的…

关于在Tkinter + Pillow图片叠加中出现的问题

这段时间我一直在尝试对多图层图片进行一个叠加的操作&#xff0c;想用tkinter实现出来&#xff0c;先看错误 这里我其实已经选择了图片&#xff0c;但是发现是ValueError&#xff0c;我尝试断点检测但是也无动于衷&#xff0c;因为设置变量检测的时候发现变量并没有错误&…

【周总结】Programmer‘s weekend routine---First week of February

总结 工作&#xff1a; 参加项目重构方案讨论会议、个人任务计划分期以及工期安排、项目初步重构开发 日常&#xff1a;参加年会&#xff08;阳光普照奖都莫得&#xff09; 2024.2.3 阴 不冷 连着一周的雨&#xff0c;我那袜子挂两三天了还能挤出水。。离谱、莆…

linux 文件查看 head 、 cat 、 less 、tail 、grep

查看文件详细信息 stat 文件 cat 》》适合显示小文件【行数比较少】&#xff0c;如果行数较多&#xff0c;屏幕显示不完整&#xff08;如果虚拟操作&#xff0c;是无法上下键的&#xff0c;或者滚动鼠标的&#xff0c;第三方 xsheel&#xff0c;crt 可以方向键查看&#xf…

ep-bg-purple-dark element-plus 不生效

element-plus 官网里面的 Layout 布局中的示例&#xff0c;官方文档中添加类名 class"grid-content ep-bg-purple-dark" 有相应的样式 import element-plus/theme-chalk/index.css //默认css样式 英文 import element-plus/dist/index.css 两…

在Flutter中调用Android的代码

参考 【Flutter 混合开发】嵌入原生View-Android 默认使用Android studio 和 Kotlin 基本配置 创建flutter项目 在终端执行 flutter create batterylevel添加 Android 平台的实现 打开项目下的android/app/src/main/kotlin 下的 MainActivity.kt 文件。 我这里编辑器有…

人工智能深度学习发展历程-纪年录

前言 为了理解模型之间的改进关系、明确深度学习的发展目标、提高自身对模型的深度理解、贯彻爱与和平的理念。总之&#xff0c;我做了如下表格。 时间 重大突破 模型改进 详细信息 1847 SGD 随机梯度下降 1995 SVM 支持向量机 1982 RNN 循环神经网络&#xff0c;…

烽火传递

看似很简单的单调队列优化DP 但是如果状态是表示前\(i\)个烽火台被处理完的最小代价(即不知道最后一个烽火台在哪里)就无法降低复杂度 因为假设你在区间\([i-m1,i]\)中枚举最后一个烽火台(设为\(k\))&#xff0c;你前面的状态并不是\(f[k-1]\)&#xff0c;因为此时\(k\)已经可以…

C++之std::tuple(一) : 使用

相关系列文章 C之std::tuple(一) : 使用 C三剑客之std::variant(一) : 使用 C三剑客之std::variant(二)&#xff1a;深入剖析 目录 1.简介 2.创建元组 2.1.直接初始化方式 2.2.使用花括号初始化列表方式&#xff08;C11及以上版本&#xff09; 2.3.make_tuple方式 2.4.使…

Log4j2-27-log4j2 与 springboot 整合例子

1.去除默认的依赖并导入log4j2、lombok依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><!-- 引入log4j日志时需去掉默认的logback --><exclusion>&…

【类和对象】4

日期类的拓展 c语言中的printf函数只能打印内置类型&#xff0c;为了弥补这一不足&#xff0c;c利用运算符重载可以打印自定义类型。 void operator<<(ostream&out);//声明在date.h中void Date::operator<<(ostream& out)//定义在date.cpp中 {out<<…

IBOS靶场搭建流程(超详细)

IBOS 1.下载并安装IBOS 点击然后一直下一步进行安装IBOS 显示出这个时证明安装成功 然后进行数据库的搭建&#xff0c;这里需要说明的是这里运行的服务是nginx和mysql而不是apache和mysql所以说这里的数据库名默认是root且密码也默认是root点击立即安装 安装后出现 这个页面时…