Linux下的软件包管理器vim编辑器详解与配置
文章目录
- 1.软件包管理器
- 1.1 什么是软件包
- 1.2 Linux软件生态
- 1.3apt/yum 的具体操作
- 1.3.1 查看软件包
- 1.3.2 软件安装与删除
- 1.3.3 注意事项
- 1.4 安装源
- Centos 安装源路径:
- Ubuntu 安装源路径:
- 源的替换
- 2. 编辑器Vim
- 2.1IDE
- 2.2 vim使用和概念
- 2.3 vim的基本操作
- 2.3.1 进入vim
- 2.3.2 [正常模式]切换至[插入模式]
- 2.3.3[插入模式]切换至[正常模式]
- 2.3.4 a、o、I的区别
- 2.3.5 [正常模式]切换至[末行模式]
- 2.3.6 文件的保存与退出
- 2.4vim正常模式命令集
- shift+g=G(进入文本末端)&&gg(进入到文本开始)
- shift+4=$(定位当前行结尾)&shift+6=^(定位当前行开头)
- H J K L(左 下 上 右移动)
- w(按照单词向右移动)&b(按照单词向左移动)
- yy(复制)+p(粘贴到当前行的下一行)+dd(剪切)
- u(撤销操作)+ ctrl+r(对u的撤销进行撤销)
- shift+`=~(大小写转换)
- n+r(替换光标所在的n个字符)+R(进入替换模式,进行批量化内容替换)
- n+x(删除光标所在n个字符,连续按下x 连续删除)&n+X(删除顺序为左)
- 批量化注释和去注释
- 批量化注释
- 批量化去注释
- 批量删除与插入
- 批量化替换
- 2.5 权限与vim
- 2.6 vim的意外退出
- 2.7 底行模式下命令集
- 保存 退出
- /key+n(匹配搜索)
- !+命令(不退出vim 直接对代码进行编译和运行)
- 替换关键词
- 显示/隐藏行号
- vs分屏操作
- 2.8 vim一些小知识
- 3. vim的简单配置(了解)
- 3.1 配置流程
- 3.2 配置原理
- 3.3 vim常见配置项
- 3.4vim的一键配置
- 4.利用vim配置sudo权限(补充)
- 求三连!
1.软件包管理器
在Linux下安装软件的常见方式:
- 源代码安装
- rpm包安装 (rpm是是Linux 系统中一种标准化的软件包格式,它将预编译的软件、依赖信息、元数据等打包成一个独立的.rpm文件,用于简化软件的安装、卸载、升级和管理流程。)
- 包管理器安装 — 最佳实践
1.1 什么是软件包
- 在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序.
- 但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装.
- 软件包和软件包管理器,就好比 “App” 和 “应用商店” 这样的关系.
- yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器.主要应用在Fedora, RedHat, Centos等发行版上.
- Ubuntu:主要使用apt(Advanced Package Tool)作为其包管理器。apt同样提供了自动解决依赖关系、下载和安装软件包的功能。
1.2 Linux软件生态
如何评估一款操作系统的好坏?
一个系统必须被更多的人使用,根据需求不同,比如企业用centos 学生用Ubuntu 从形成使用圈子,然后吸引更多更多的人使用。
先要吸引更多人使用就必须让圈子更完善,建立社区论坛,写资料和做系统适配的软件。

为什么会有人特定社区提供软件,还发布?还提供云服务器让你下载?
系统开发者们为了开发的系统更多人用,开发者们很乐意自己开发应用程序,社区的一些人和企业工程师们有时候发现了系统的一些应用不足 自己也写了应用然后开源。
那为什么写了软件 又愿意在各个Linux社区上写安装包
因为开源者写出软件,希望自己的软件各个人能用到!!
从而系统成全软件,软件又成全了系统!

包管理器内涵配置文件 ,配置了包服务器的公网IP
因为一些已知原因 我们国内的一些国外的软件包是无法访问的 所以就有一些组织把这些软件包通过镜像(就是拷贝)的方式配置到国内的服务器 虽然我们所用的是国外的操作系统 但是有些厂商 比如腾讯 阿里 的云服务器在配置系统的时候就会把国外的链接替换成国内的链接 下载安装走的是国内的配置文件 加快配置速度 这种方式就叫 软件源配资

软件包依赖的问题

软件依赖于库 比如C++语言程序就依赖于C++语言库 C++语言库又依赖于C语言库 而这些依赖关系就是 依赖列表 而我们的apt和yum内部存在配置文件 软件的包 包括各种库都会在云服务器上自动调用自动安装所需要的。
1.3apt/yum 的具体操作
1.3.1 查看软件包
在centos下通过 yum list 命令可以罗列出当前一共有哪些软件包.由于包的数目可能非常之多,这里我们需要使用 grep 命令只筛选出我们关注的包.

在Ubuntu下 我们可以apt list或者apt search xxx命令进行查询
apt search 是 Debian/Ubuntu 系列 Linux 发行版中用于搜索软件包的命令,通过它可以在软件源仓库中查找包含指定关键词的软件包信息(包括包名、描述等)

1.3.2 软件安装与删除
我们可以利用apt/yum remove 指令删除软件

通过apt/yum intsall 指令安装软件

软件的分类
我们所用的软件有经过长期检验的基础软 这类软件是 Linux 系统运行和开发的核心工具,经过长期迭代验证,稳定性和兼容性极强,通常是系统默认预装或推荐优先安装的。通常通过系统默认软件源获取,无需额外添加第三方源
拓展软件(以 sl 为例),这类软件非系统运行必需,更多是为了满足特定需求(如趣味工具、小众功能)或提升使用体验,通常需要通过官方拓展源或第三方源获取。

1.3.3 注意事项
关于 yum/apt 的所有操作必须保证主机(虚拟机)网络畅通!!!
可以通过 ping 指令验证

1.4 安装源
Centos 安装源路径:
$ ll /etc/yum.repos.d/
-rw-r--r-- 1 root root 676 Oct 8 20:47 CentOS-Base.repo # 标准源
-rw-r--r-- 1 root root 230 Aug 27 10:31 epel.repo # 扩展源- 安装扩展源
$ sudo yum install -y epel-release
Ubuntu 安装源路径:
$ cat /etc/apt/sources.list # 标准源$ ll /etc/apt/sources.list.d/ # 扩展源- ubuntu 安装扩展源,就结合未来具体场景
更新安装源,现场说明原理即可。云服务器不用考虑,因为软件源都是国内的了。
源的替换
这张图片展示了与Linux系统中yum包管理器操作相关的几个步骤和命令,可分点解读如下:

- 操作步骤
- 备份:推测是在执行后续操作前对系统或软件源配置进行备份,以防止意外情况发生。
- 下载:可能是指下载所需的软件包或相关资源。
- 更新缓存:通过
yum clean all清理旧的缓存数据,再用yum makecache生成新的软件包缓存,确保yum能获取到最新的软件包信息。
- 关键命令
yum clean all:清理yum的所有缓存,包括元数据、软件包缓存等。yum makecache:重新生成yum的软件包缓存,使yum能快速检索软件包。yum -y install epel-release:安装epel-release扩展软件源,该源提供了许多官方源中没有的软件包,-y参数表示自动确认安装。
2. 编辑器Vim
2.1IDE
DE(集成开发环境)是整合了代码编辑、编译、调试、版本控制等功能的开发工具,能大幅提升开发效率。
如:Qt Creator
核心特点:
主打 Qt 图形界面开发,同时支持纯 C/C++ 开发,集成gcc/g++编译器和gdb调试器,符合文档中的编译调试需求。
支持跨平台开发,在 Linux 上编写的代码可直接编译为 Windows/macOS 版本,适合需要跨平台的项目。
适用场景:Linux 下 Qt 图形化项目开发,或需要跨平台的 C/C++ 项目。
IDE 的核心优势在于 “集成”—— 将文档中分散的 “编辑(vim)- 编译(gcc)- 调试(gdb)- 版本控制(git)” 等独立工具整合到同一界面,减少工具切换成本,提升开发效率。
但是 Linux下的开发工具是独立的!我们所讲的vim\vi就是编辑器!

2.2 vim使用和概念
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
vim有三种最为基本的模式,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
- 正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到last line mode - 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。 - 末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
在命令模式下,shift+;=:即可进入该模式。要查看你的所有模式:打开 vim,底行模式直接输入:help vim-modes

除了以上三种最基本的模式,我们还一般使用的模式是视图模式(visual block) 和 替换模式。
接下来 我们通过实操 来让大家深度了解 vim 的基本操作。
2.3 vim的基本操作
2.3.1 进入vim
前置条件:我们先在/home/ubuntu路径下创建目录lesson.vim 然后进入该目录创建文件test.c 输入vim test.c即可进入vim编辑器

进入后的页面:
不过有一点要特别注意,就是你进入 vim 之后,是处于 [正常模式],你要切换到 [插入模式] 才能够输入文字。
2.3.2 [正常模式]切换至[插入模式]
这三个操作刚开始(编辑器里面为空时候)都可以进入
- 输入a
- 输入i
- 输入o
当输入a、i、o任意一个 即可进入插入模式此时底下有一个INSERT

此时我输入一串C语言代码:

2.3.3[插入模式]切换至[正常模式]
可以按esc(左上角的按键)切换至正常模式 此时我们先将光标移到第一行第一个字符 按下esc

此时我们进入了正常模式同时光标在第一行第一个
2.3.4 a、o、I的区别
在 Vim 命令模式下,a、i、o 都是进入插入模式的快捷键,但它们的插入位置不同,具体区别如下:
i(insert):在当前光标所在位置前插入文本(光标不动,新内容从光标前开始)。a(append):在当前光标所在位置后插入文本(光标不动,新内容从光标后开始)。o(open):在当前光标所在行的下方新建一行,并在新行开头插入文本(光标自动移到新行)。
简单说:i 是“光标前插入”,a 是“光标后插入”,o 是“下一行插入”。
当然这里面有一些细节问题:
在第一行的时候 输入a 此时在原光标所在字符#后插入文本:


此时光标在s前i后 此时esc后按a是在s后面进行插入
输入esc后
输入a:

此时在s后面插入:

按esc返回正常模式输入i :
输入esc光标回退:

输入i,光标不变:

相当于此时是在原来的第三个a前插入字符

此时按esc后按o

发现直接换行。
2.3.5 [正常模式]切换至[末行模式]
输入shift + ;,其实就是输入:

2.3.6 文件的保存与退出
- :w(保存当前文件)
- :wq(输入「wq」,存盘并退出vim)
- :q! (输入q!,不存盘强制退出vim)
我们最常用的就是wq,保存并退出

在正常模式下有个快捷键 可以快速保存并退出 shift+z+z(shift+连按两下z)
2.4vim正常模式命令集
shift+g=G(进入文本末端)&&gg(进入到文本开始)
此时光标在左上角

当按下shift+g时候光标移动到最末尾

当连续点两下g光标又到了文本开头

当输入5+G 光标进入第五行

shift+4=$(定位当前行结尾)&shift+6=^(定位当前行开头)
刚开始我们的光标是在第一行开头的

当按下shift+4即$时候 光标移动到末尾

当我再按下shift+6即^时候 光标移动到开头

H J K L(左 下 上 右移动)
正常情况下 我们的⬆️⬇️↔️这几个按键也能正常移动 为什么要设置HJKL这四个按键呢?
第一点当然是因为快 其次就是早期的键盘没有⬆️⬇️↔️键 如图

这个上下左右就不演示了。
w(按照单词向右移动)&b(按照单词向左移动)
按下w会按照单词为单位向右移动,按下b 按单词为单位向左跳
当然前面可以加n 按下2 w会右跳两个词。
yy(复制)+p(粘贴到当前行的下一行)+dd(剪切)
这里yy表式复制光标所在行,当yy后按下p就会粘贴到当前行的下一行

当然这里的yy和p都可以结合n进行操作
这里5yy表式复制包含当前行开始的共计5行,当按下p:
注意:
当然你先按1又按0 相当于按了10 你之前按的数字不会重置。
当按下 5p 会在当前行下方连续粘贴 5 次复制的内容:

当然有复制就有剪切 我们将页面还原回原样 按下dd 剪切当前行(删除加复制)当然也可以和n合用
操作前:

按下5dd从当前行开始的5行进行剪切

按下p粘贴剪切内容至光标下行

u(撤销操作)+ ctrl+r(对u的撤销进行撤销)
按u撤销上步操作,按下ctrl+r撤销对u的撤销。
只要你未推出vim 随时可以撤销!
shift+`=~(大小写转换)
当按下~时会快速大小写转换(当然也可以搭配n使用)

n+r(替换光标所在的n个字符)+R(进入替换模式,进行批量化内容替换)
比如按下5r 然后输入g 光标后5个字符全部替换为g

当按下R我们会进入替换模式 进行批量化替换

此时输入的每一个字符都会在光标处替换 假设在第一行输入一个hello

按下ESC返回命令模式
n+x(删除光标所在n个字符,连续按下x 连续删除)&n+X(删除顺序为左)
「x」:每按一次,删除光标所在位置的一个字符
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
这个就不演示了
批量化注释和去注释
批量化注释
- 首先按下
ctrl+v进入视图模式 按esc回退命令模式

hjkl按j选取区域

- 按下
shift+i=I之间从视图模式进入插入模式
- 输入//

- 按下
esc进入命令模式随后完成注释 
批量化去注释
- 按
ctrl+v进入视图模式

- 通过
hjkl选取区域

- 按下
d去除注释

批量删除与插入
用同样的方式也可做到批量化删除,批量化删除内容和批量化插入
通用也可以

批量化替换
输入ctrl+v进入视图模式 然后选中要替换的内容

按下r输入要替换的内容

2.5 权限与vim
当你失去读权限 打开vim后你将看不到任何内容


当失去写权限 你将无法进入编辑模式 但是可以通过w!强制进入编辑模式 通过w!强制对编辑内容进行保存并退出

哪怕和我上图一样侥幸进入编辑模式也无法保存,但是可以通过wq!强制保存退出

失去执行权限,则是无法编译
2.6 vim的意外退出
当vim意外退出(如断网闪退)为了防止文件内容丢失 文件会自动生成一个隐藏的.swp的临时文件

此时进入test.c文件会出现以下选项

这是Vim编辑器的一个提示界面,含义如下:
- “Swap file “.test.c.swp” already exists!”:表示名为
.test.c.swp的交换文件已经存在。交换文件是Vim在编辑文件时自动创建的,用于在意外情况(如程序崩溃、断电)下恢复未保存的内容。 - 后面的选项是让用户选择如何处理这个交换文件:
[O]pen Read-Only:以只读方式打开文件,无法进行修改。(E)dit anyway:不管交换文件,直接编辑原文件,可能会丢失之前未保存的更改。(R)ecover:从交换文件中恢复之前未保存的内容,继续编辑。(Q)uit:退出Vim。(A)bort:放弃当前操作,回到之前的状态。
如果想以后进入该文件不再出现该页面 直接删除.swp文件即可

2.7 底行模式下命令集
保存 退出
- 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:
- :w(保存当前文件)
- :wq(输入「wq」,存盘并退出vim)
- :q! (输入q!,不存盘强制退出vim)
/key+n(匹配搜索)
「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

!+命令(不退出vim 直接对代码进行编译和运行)


当按下回车键 再次回到vim。
替换关键词
按照%s/被替换词/替换词/g则可以替换

替换成功

显示/隐藏行号
输入set nu显示行号


输入set nonu隐藏行号

vs分屏操作
我们一般情况下编写代码 不光有源文件 也有头文件 那么如何分屏进行操作呢
通过vs + 文件名(文件存在直接打开 不存在直接创建)


在命令模式下按下ctrl+ww切换屏幕 此时光标在右屏

在左屏幕输出hello 再保存退出 此时多了个test.h文件
2.8 vim一些小知识
当vim退出时,光标在第几行,那么再次打开,光标还在原来的位置。
当vim 文件 + 数字打开时候光标直接定位到数字行数

3. vim的简单配置(了解)
vim配置本质很复杂,但是这不是重点 很多配置选项大模型一搜就出来了,所以我简单写写vim配置原理
3.1 配置流程
首先 进入非root账户进行vim配置 我们要在当前用户家目录下创建.vimrc文件!

进入vimrc写下set nu保存退出

此时进入lesson.vim目录打开我们的test.c文件 发现自动带有行号

3.2 配置原理
vim命令本质就是在/user/bin/vim下的一条指令 和ls cat没区别,当我在普通用户打开vim时候,vim就会在当前用户家目录下查找配置文件.vimrc会把其里面的配置项 作为vim启动时原始配置文件!
vim配置只会在当前账号下有效
3.3 vim常见配置项
" ===================== 基础编辑配置 =====================
set number " 显示行号
set relativenumber " 显示相对行号(方便跳转,如 5j 跳5行)
set cursorline " 高亮当前行
set cursorcolumn " 高亮当前列(可选,增强对齐)
set scrolloff=5 " 滚动时上下保留5行空白,避免光标顶边
set wrap " 自动换行(长代码不溢出)
set linebreak " 按单词换行,不拆分单词" ===================== 缩进配置(编程必备) =====================
set tabstop=4 " Tab 键对应4个空格
set shiftwidth=4 " 自动缩进/退格时的宽度(与 tabstop 一致)
set expandtab " 将 Tab 键转换为空格(避免不同编辑器缩进混乱)
set autoindent " 新行自动继承上一行缩进
set smartindent " 智能缩进(如 if/for 后自动缩进)" ===================== 搜索与显示优化 =====================
set hlsearch " 高亮搜索结果
set incsearch " 实时搜索(输入字符时即时匹配)
set ignorecase " 搜索忽略大小写(大写字母时自动区分)
set smartcase " 若搜索包含大写,自动区分大小写
set mouse=a " 支持鼠标操作(终端中也能用)
set encoding=utf-8 " 编码格式(避免中文乱码)
set termencoding=utf-8" ===================== 快捷键自定义 =====================
inoremap jj <Esc> " 插入模式下按 jj 快速退出到普通模式(比按 Esc 方便)
nnoremap <C-s> :w<CR> " 普通模式下 Ctrl+s 保存(类似编辑器习惯)
nnoremap <C-q> :q<CR> " 普通模式下 Ctrl+q 退出
nnoremap <C-h> <C-w>h " Ctrl+h/j/k/l 切换分屏(替代 <C-w>h)
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l" ===================== 其他优化 =====================
set nobackup " 禁用备份文件(避免生成 .xxx~ 文件)
set nowritebackup
set undofile " 启用持久化撤销(关闭文件后重新打开仍可撤销)
set undodir=~/.vim/undo// " 撤销文件存放目录
set laststatus=2 " 始终显示状态栏(显示文件名、行号等信息)
set wildmenu " 命令行补全优化(可视化选择)
3.4vim的一键配置
在普通账户下家目录下输入以下命令直接一键配置 会要求你输入root密码
cenos下:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
删除:
bash ~/.VimForCpp/uninstall.sh
ubuntu下:
curl -sLf https://raw.githubusercontent.com/jaywcjlove/vim-web/master/install | bash -s -- install
删除:
curl -sLf https://raw.githubusercontent.com/jaywcjlove/vim-web/master/install | bash -s -- uninstall
4.利用vim配置sudo权限(补充)
进入root账号 vim打开/etc/sudoers文件 在该位置加入以下内容保存退出即可

此时,你添加的用户就有了sudo权限。
