【Linux】Linux工具漫谈:yum 与 vim,高效操作的 “左膀右臂”

🔥 脏脏a的技术站 🔥

「在代码的世界里,脏脏的技术探索从不设限~」

🚀 个人主页:脏脏a-CSDN博客

📌 技术聚焦:Linux 环境下 yum 与 vim 工具的实用技巧与深度解析
📊 文章专栏:Linux

🔗 上篇回顾:Linux权限管理
📖Linux 世界里,yum 和 vim 是提升操作效率的关键工具。前面聊过权限管理,现在就来聊聊这俩 "神器",看看它们能给我们的 Linux 操作带来多少便利~

目录

🚀一、Linux软件包管理器yum

🔍二、Linux系统(Centos)生态问题

[2.1 安装软件的三种方式](#2.1 安装软件的三种方式)

[2.2 生态问题](#2.2 生态问题)

【使用者视角】

【提供者视角】

【生态的最终考量】

🧪三、yum相关操作

[3.1 查看软件包](#3.1 查看软件包)

[3.2 安装和卸载软件](#3.2 安装和卸载软件)

[3.3 软件源](#3.3 软件源)

基本软件源(base)

扩展软件源(epel)

[3.4 yum本地配置](#3.4 yum本地配置)

🎯四、lrzsz软件包

[📋五、Linux 编辑器 ------vim](#📋五、Linux 编辑器 ——vim)

📌六、vim的多种模式

[✂️6.1 命令模式命令集](#✂️6.1 命令模式命令集)

[📝6.2 底行模式命令集](#📝6.2 底行模式命令集)

🔗七、vim配置

[1. 语法高亮](#1. 语法高亮)

[2. 显示行号](#2. 显示行号)

[3. 缩进相关配置](#3. 缩进相关配置)

[4. 搜索相关配置](#4. 搜索相关配置)

[5. 显示辅助信息](#5. 显示辅助信息)


🚀一、Linux软件包管理器yum

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

yum 就像 Linux 系统里的 "智能应用商店",不仅能帮我们便捷获取编译好的软件包,还会自动搞定软件包之间的依赖关系,让安装软件这事儿变得顺顺当当。它主要用在 Fedora、RedHat、Centos 这些 Linux 发行版上,把它当成管理软件下载安装的客户端,就跟咱们手机上的应用商店一个道理~

🔍二、Linux系统(Centos)生态问题

2.1 安装软件的三种方式

  • 【源代码安装】:需要先获取软件的源代码,然后通过编译等一系列操作,将源代码转化为可在 Linux 系统上运行的可执行程序。这种方式比较灵活,但操作步骤相对繁琐,需要用户具备一定的编译相关知识。
  • 【rpm 安装】:rpm(Red - Hat Package Manager)是一种软件包格式,使用 rpm 工具可以直接安装这种预编译好的软件包。不过,rpm 安装在处理软件包之间的依赖关系时,需要用户手动去解决,要是依赖没处理好,安装可能会失败。
  • 【yum 安装】:yum(Yellow dog Updater, Modified)是更智能的包管理工具。它能自动解决软件安装过程中的安装源、软件版本匹配以及依赖关系等问题,相比前两种方式,更加便捷高效,能让用户更轻松地完成软件安装。

2.2 生态问题

构建操作系统生态,核心是平衡使用者与提供者的需求,形成良性循环,这一点在 Linux 软件生态里体现得十分具体。

【使用者视角】

对使用者来说,得有完善文档、丰富配置和活跃社区,降低上手门槛,方便解决问题,让更多人愿意用。就像图里展示的,新人做操作系统选型时,会关注 "生态好",而 Linux 系统借助 yumapt - get 等工具,能便捷从服务器获取软件,背后有活跃社区和完善资源支持,让使用者(不管是新人还是职业程序员)能顺畅开展工作。

【提供者视角】

靠开源吸引公司、开发者参与 ------ 公司依赖系统会捐赠支持,维持项目活力;大公司的使用经验也能反哺系统优化,让社区问题解决更高效。从图中能看到,华为等服务器上的官方 yum 源、扩展 yum 源,由公司、个人组织等提供,这些提供者出于不同目的参与进来,同时,Linux 开源作为一种商业战略,也让生态的商业逻辑更清晰,不过也要注意,开源有时候也挺 "贵",需要投入成本维护。

【生态的最终考量】

一款优秀的系统需要具备稳定的内核行业认可的技术标准 ,同时要有完善的文档活跃的社区丰富的配置选项丰富的软件生态 ,还要能在多硬件、多场景下适配 ,并获得大公司/行业的广泛采用。这样才能从使用者视角降低上手门槛、方便解决问题,从提供者视角形成良性循环,最终构建出有生命力的生态体系。

🧪三、yum相关操作

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

3.1 查看软件包

通过 yum list 命令可以罗列出当前一共有哪些软件包 . 由于包的数目可能非常之多 , 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:
【列出lrzsz相关的软件包】:

  • 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
  • "x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包. 选择包时要和系统匹配.
  • "el7" 表示操作系统发行版的版本. "el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6.
  • 最后一列,os 表示的是 "软件源" 的名称, 类似于 "小米应用商店", "华为应用商店" 这样的概念.

3.2 安装和卸载软件

  • [sudo / root身份] yum install [-y] XXX
  • **sudo / root身份**\] yum remove \[-y\] XXX

注意事项:

  • 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
  • yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
  • 如果 yum 报错,先查看报错信息里的提示(报错信息通常会说明冲突、缺失依赖或源的问题),再结合提示去搜索(比如用报错关键词 +"CentOS yum 解决" 等关键词),这样能更精准定位问题
  • -y 后,yum 会自动回答 "是",跳过手动确认步骤,方便脚本或批量操作

3.3 软件源

软件源是存放 Linux 系统软件包的仓库,yum 工具通过软件源来下载、安装软件。下面介绍两个常见的软件源:

基本软件源(base)
  • 特点:提供基本、稳定的软件包,是系统运行和常用软件安装的基础来源,能保障系统的稳定运行。
扩展软件源(epel)
  • 特点:提供大量官方基本源没有的拓展软件包,丰富了软件生态,但相对来说,部分软件包的稳定性可能不如基本源中的。

yum 会根据配置文件(通常位于 /etc/yum.repos.d/)中的仓库地址进行下载。这些配置文件中包含了目标服务器的链接,从而使得系统可以正确地找到和下载所需的软件包。

【配置epel源】:

这里显示已经配置过了

3.4 yum本地配置

由于国内访问国外网络环境欠佳,使用 CentOS 官方默认的国外仓库地址下载软件包时,速度往往较慢。为提升下载和安装效率,国内不少知名企业与组织搭建了官方仓库的镜像,将国外软件包复制到本地服务器。用户只需把 /etc/yum.repos.d/ 目录下配置文件里的链接替换为国内镜像地址,就能加快软件包下载速度,本质就是把软件源地址从国外链接更新为国内镜像地址。

yum 会依据 /etc/yum.repos.d/ 路径下的配置文件来生成下载链接(结合 OS 版本和要下载的软件),进而辅助完成下载、安装操作。一般系统内置的链接指向 CentOS 国外官网,下载速度慢,所以需要进行配置,配置的本质就是修改或更改配置文件内容。

配置步骤示例(以阿里云镜像为例):

1. 下载国内镜像的配置文件 :使用 wget 命令下载阿里云的 CentOS 7 镜像配置文件到指定路径:

bash 复制代码
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

其中,-O 选项用于将远端下载的文件重命名为 CentOS-Base.repo 并保存到 /etc/yum.repos.d/ 目录。

2. 清理缓存、生成新缓存并更新系统

  • 清理 yum 缓存:
bash 复制代码
yum clean all
  • 生成新的缓存(让 yum 加载新配置的源信息):
bash 复制代码
yum makecache
  • 升级系统(可选,更新已安装软件包到最新版本):
bash 复制代码
yum -y update

这样配置后,yum 就会从国内镜像源获取软件包,下载速度会得到提升。

不同 CentOS 版本(如 CentOS 6、CentOS 8 等)对应的阿里云镜像链接可能不同 ,可以提示用户根据自己的系统版本去阿里云镜像站(https://developer.aliyun.com/mirror/)查找对应版本的配置文件链接,这样针对性更强~

🎯四、lrzsz软件包

lrzsz 是一套在 Linux 系统中用于实现与 Windows 机器之间文件传输的工具集 ,安装 lrzsz 软件包后,会提供 rz 和**sz** 两个命令。它常搭配终端工具(如 XShell、SecureCRT 等)使用,无需借助 FTP 等复杂的文件传输协议,就能快速完成文件在不同系统间的传输。

【安装方法】:

bash 复制代码
sudo/root账号 yum install lrzsz
  • rz -E和拖拽是一样的效果将windows客户端文件下载到Linux上
  • sz -E和拖拽是一样的效果Linux下传递下来到本地

📋五、Linux 编辑器 ------vim

vi 与 vim 同属多模式编辑器范畴,vim 是 vi 的增强版本,它全盘兼容 vi 的所有指令,还增添了诸多新特性。像语法高亮功能,能让代码等文本内容的不同部分以不同颜色显示,便于阅读;可视化操作方面,vim 不仅能在终端中顺畅运行,还可在 X window、mac os、windows 等多种系统环境下使用。vim 作为一款编辑器,和日常所用的记事本作用相近,主要用于文本的创建与修改。

既然 vim 是编辑器,我们可以直接执行 vim filename.txt 命令,若 filename.txt 不存在,该命令会创建并打开这个新文件。不过,更稳妥的做法是先用 touch filename.txt 命令创建好文件,再用 vim 对其进行编辑书写。

📌六、vim的多种模式

vim 有着丰富的操作模式,虽说实际存在十余种模式,但对于入门阶段,掌握以下 3 种核心模式就足够了,它们各自承担不同的功能:

  • 命令模式(Normal mode) :允许使用者通过命令来进行文本的编辑控制,将来更多是用于完成复制粘贴和区域选择,删除,大小写转换
  • 插入模式(Insert mode) :只有在插入模式下,才能进行文字输入。若要回到命令模式,只需按下 ESC 键。在日常编辑工作中,插入模式是使用得最为频繁的编辑模式。
  • 底行模式(Last line mode) :用来进行让vim进行包括但是不限于shell进行交互的,可以在底行执行一些命令和wq退出。相当于对于我们的整个软件这个使用情况进行控制,保存退出。

命令模式属于核心模式,如果进入到其他模式需要退回到命令模式可以无脑Esc返回。

✂️6.1 命令模式命令集

【和插入模式相关的命令】:

  • 按**[i]**:切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;
  • 按**[a]**:进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按**[o]**:进入插入模式后,是插入新的一行,从行首开始输入文字
  • 按**[ESC]**键:从插入模式切换命令模式
  • 无法从插入模式直接切换到底行模式

【移动光标相关的命令】:

  • vim 的命令模式、插入模式、末行模式,默认都不支持鼠标操作
  • vim可以直接用键盘上的箭头来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
  • 按[gg]:进入到文本开始
  • 按[G (shift+g)]:进入文本末端
  • 按 [n+G(n + shift + g)]: 定位光标到第n行
  • 按「 $(shift+4) 」:移动到光标所在行的"行尾"
  • 按「^(shift+6)」:移动到光标所在行的"行首"
  • 按「w」:光标跳到下个单词的开头(遇到单个字符就到下一个字符的开头,按b同理)
  • 按「b」:光标回到上个单词的开头
  • 按「ctrl」+「b」:屏幕往"后"移动一页
  • 按「ctrl」+「f」:屏幕往"前"移动一页
  • 按「ctrl」+「u」:屏幕往"后"移动半页
  • 按「ctrl」+「d」:屏幕往"前"移动半页

【复制相关的命令】:

  • [yy]:复制光标所在行
  • [n yy]:复制光标所在行及下方共 n
  • [dd]:剪切、删除光标所在行
  • [n dd]:剪切、删除光标所在行及下方共 n
  • [p]:粘贴(复制 / 剪切的内容)到光标所在行的下一行
  • [n p]:粘贴(复制 / 剪切的内容)n 次到光标所在行的下一行

【示例】:5yy + 2p(复制5行,粘贴2次)

【删除文字相关命令】:

  • [x]:每按一次,删除光标所在位置的一个字符。
  • [#x]:例如,[6x] 表示删除光标所在位置后面(包含自身在内)的 6 个字符。
  • [X](大写 X):每按一次,删除光标所在位置前面的一个字符。
  • [#X]:例如,[20X] 表示删除光标所在位置前面的 20 个字符。
  • [dd]:删除光标所在行。
  • [#dd]:从光标所在行开始,删除 # 行。

【替换相关命令】:

  • [r]:替换光标所在处的单个字符。
  • [R] :进入连续替换模式,可连续替换光标所到之处的字符,直到按下 [ESC] 键为止。
  • shift + ~:实现字符的大小写转换。
  • (n)r :对光标所在字符之后的 n 个字符进行批量替换。
  • (n)x :删除光标所在字符之后的 n 个字符。

【撤销相关操作】:

  • [u] :如果误执行了某个命令,可立即按下 [u],撤销上一次操作。多次按下 [u],能执行多次撤销,逐步回退到之前的状态。
  • [Ctrl + r] :用于恢复被撤销的操作,也就是撤销的 "反操作",可将通过 [u] 撤销的操作恢复回来。

📝6.2 底行模式命令集

在使用末行模式前,需先按 [ESC] 键确保处于命令模式,再按 : 即可进入末行模式。

  • 列出行号 :输入 set nu,文件中每一行前面会显示行号。
  • 跳到文件中的某一行 :在冒号后输入数字(如 15),再按回车键,就会跳到文章的第 15 行。
  • 查找字符
    • /{关键字}:先按 / 键,再输入要寻找的字符,若第一次找到的关键字不是想要的,可一直按 n 往后寻找,直到找到目标关键字。
    • ?{关键字}:先按 ? 键,再输入要寻找的字符,若第一次找到的关键字不是想要的,可一直按 n 往前寻找,直到找到目标关键字。
    • 可通过操作实验,体会 /(往后查找)和 ?(往前查找)的区别。
  • 保存文件 :在冒号后输入字母 w,即可保存文件。
  • 离开 vim
    • q:按 q 退出,若无法正常离开,可在 q 后跟 !(如 q!)强制离开。
    • wq:建议离开时使用,既保存文件又退出 vim。
      【多文件编辑与窗口切换操作】:

在 vim 中进行多文件编辑及窗口相关操作时,可通过末行模式(命令模式下按 : 进入)的命令来实现:

  • 打开多文件编辑窗口 :在末行模式下输入 vs {文件名}(例如 vs test1.txt),能打开指定文件的编辑窗口,实现多文件同时编辑。若要打开多个文件,可多次执行该命令,或在启动 vim 时直接指定多个文件(如 vim file1.txt file2.txt)。
  • 窗口光标切换(命令模式生效) :使用 Ctrl + ww 快捷键,可在不同的文件编辑窗口之间切换光标。
  • 操作作用范围:光标所在的窗口就是当前进行操作的窗口,所有的编辑、保存等操作都只对当前光标所在窗口的文件生效。

通过这些操作,能高效地在多个文件之间进行编辑和切换,提升多文件处理的效率。

🔗七、vim配置

Vim 的基础配置可通过修改系统公共的 /etc/vimrc 文件(对所有用户有效),或者每个用户在自己主目录下建立的私有的 .vimrc 文件(可通过 su 切换用户、cd ~ 进入主工作目录后,用 vim .vimrc 打开编辑)来优化编辑体验,且一个用户一个 .vimrc 配置文件不会互相影响,同时不建议给 root 做配置,用普通用户即可。

1. 语法高亮

bash 复制代码
syntax on

作用:开启语法高亮,让代码、配置文件等内容按语法规则显示不同颜色,提升可读性,比如代码中的关键字、变量、字符串会有不同色彩区分。

2. 显示行号

bash 复制代码
set nu

作用:在 Vim 编辑界面左侧显示行号,方便快速定位代码行,尤其在查看或修改大文件时,能更高效找到目标位置。

3. 缩进相关配置

  • 设置缩进空格数:

    bash 复制代码
    set shiftwidth=4

    作用:指定代码缩进时的空格数量为 4,让代码缩进风格更统一。

  • Tab 键等效空格数:

    bash 复制代码
    set tabstop=4

    作用:将 Tab 键的功能等效为插入 4 个空格,配合 shiftwidth,确保缩进的一致性,避免因 Tab 和空格混用导致的格式问题。

  • 自动缩进:

    bash 复制代码
    set autoindent

    作用:开启自动缩进,在换行时会自动延续上一行的缩进格式,减少手动调整缩进的操作。

  • 智能缩进

    bash 复制代码
    set smartindent

    作用:根据代码语法智能调整缩进,比如在编写 C、Python 等语言的代码时,if 语句、循环语句等结构会自动进行合适的缩进。

4. 搜索相关配置

  • 忽略大小写搜索:

    bash 复制代码
    set ignorecase

    作用:在使用 /? 进行搜索时,忽略关键字的大小写,更灵活地查找内容。

  • 智能匹配搜索:

    bash 复制代码
    set smartcase

    作用:与 ignorecase 配合,若搜索关键字包含大写字母,则严格区分大小写;若全为小写,则忽略大小写,兼顾搜索的灵活性与精确性。

5. 显示辅助信息

  • 显示光标位置:

    bash 复制代码
    set ruler

    作用:在 Vim 界面底部显示光标当前所在的行号和列号,清晰了解光标位置。

  • 显示当前模式:

    bash 复制代码
    set showmode

    作用:在 Vim 界面底部显示当前所处的模式,比如插入模式(-- INSERT --)、普通模式等,方便知晓操作状态。

以上是yum和vim工具的所有内容,感谢大家的观看!!!

相关推荐
APItesterCris3 小时前
构建弹性数据管道:利用淘宝商品 API 进行流式数据采集与处理
linux·数据库·windows
九河云3 小时前
TOS + 数字孪生:集装箱码头的智能进化密码
大数据·服务器·网络·数据库·数字化转型
艾莉丝努力练剑3 小时前
【C++STL :stack && queue (一) 】STL:stack与queue全解析|深入使用(附高频算法题详解)
linux·开发语言·数据结构·c++·算法
代码or搬砖3 小时前
文件上传阿里云OSS以及本地图片服务器搭建
服务器·阿里云·云计算
悟能不能悟4 小时前
dcpatchscan.exe这是什么
运维·服务器
kyle~4 小时前
计算机系统---CPU的进程与线程处理
linux·服务器·c语言·c++·操作系统·计算机系统
wanhengidc4 小时前
云手机 流畅运行
运维·服务器·安全·游戏·智能手机
NiKo_W4 小时前
Linux 进程通信——基于责任链模式的消息队列
linux·服务器·消息队列·责任链模式·进程通信
云飞云共享云桌面4 小时前
广东某模具制造工厂用一台云服务器供8个研发设计同时用
linux·运维·服务器·网络·自动化·制造