目录
[1. 软件包管理器](#1. 软件包管理器)
[1.1 什么是软件包](#1.1 什么是软件包)
[1.2 Linux 软件生态](#1.2 Linux 软件生态)
[1.2.1 对一个软件的下载分为](#1.2.1 对一个软件的下载分为)
[1.2.2 操作系统的好坏评估 --- 生态问题](#1.2.2 操作系统的好坏评估 --- 生态问题)
[1.2.3 为什么会有人免费提供特定的社区、软件,还发布?还提供云服务器让你下载?](#1.2.3 为什么会有人免费提供特定的社区、软件,还发布?还提供云服务器让你下载?)
[1.2.4 国内镜像源](#1.2.4 国内镜像源)
[1.3 yum 具体操作](#1.3 yum 具体操作)
[1.3.1 查看软件包](#1.3.1 查看软件包)
[1.3.2 软件安装](#1.3.2 软件安装)
[1.3.3 软件卸载](#1.3.3 软件卸载)
[1.3.4 注意事项](#1.3.4 注意事项)
[1.4 安装源](#1.4 安装源)
[2. 编辑器Vim](#2. 编辑器Vim)
[2.1 vim的基本概念](#2.1 vim的基本概念)
[2.2 vim 的基本操作](#2.2 vim 的基本操作)
[1. 进入vim](#1. 进入vim)
[2. [命令模式]切换至[插入模式]](#2. [命令模式]切换至[插入模式])
[3. [插入模式]切换至[命令模式]](#3. [插入模式]切换至[命令模式])
[4. [命令模式]切换至[底行模式]](#4. [命令模式]切换至[底行模式])
[5. 退出vim](#5. 退出vim)
[2.3 vim 命令模式的命令集](#2.3 vim 命令模式的命令集)
[1. 命令模式转插入模式](#1. 命令模式转插入模式)
[2. 从插入模式切换为命令模式](#2. 从插入模式切换为命令模式)
[3. 光标移动](#3. 光标移动)
[4. 删除文字](#4. 删除文字)
[5. 复制](#5. 复制)
[6. 替换](#6. 替换)
[7. 撤销上一次操作](#7. 撤销上一次操作)
[8. 更改](#8. 更改)
[9. 调至指定的行](#9. 调至指定的行)
[2.4 V-BLOCK (视图模式)](#2.4 V-BLOCK (视图模式))
[1. 若想批量化注释第8到第18行](#1. 若想批量化注释第8到第18行)
[2. 代码全部注释](#2. 代码全部注释)
[3. V-BLOCK模式下的光标操作](#3. V-BLOCK模式下的光标操作)
[2.5 vim 底行模式命令集](#2.5 vim 底行模式命令集)
[1. 列出行号](#1. 列出行号)
[2. 跳到文件中的某⼀⾏](#2. 跳到文件中的某⼀⾏)
[3. 查找字符](#3. 查找字符)
[4. 保存文件](#4. 保存文件)
[5. 外部命令过滤器](#5. 外部命令过滤器)
[6. 全局替换命令](#6. 全局替换命令)
[7. vs 指令可实现分屏多文件操作](#7. vs 指令可实现分屏多文件操作)
[8. 离开vim](#8. 离开vim)
[2.6 操作总结](#2.6 操作总结)
[2.7 vim 其他命令补充](#2.7 vim 其他命令补充)
正文开始:
1. 软件包管理器
1.1 什么是软件包
- 在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.
- 但是这样太麻烦了, 于是有些⼈把⼀些常⽤的软件提前编译好, 做成软件包 (可以理解成windows上的安装程序) 放在⼀个服务器上, 通过包管理器可以很⽅便的获取到这个编译好的软件包, 直接进行安装.
- 软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系.
- yum(Yellow dog Updater, Modified)是Linux下非常常用的⼀种包管理器. 主要应用在Fedora, RedHat,Centos等发行版上.
- Ubuntu :主要使用apt (Advanced Package Tool)作为其包管理器。apt同样提供了自动解决依****赖关系、下载和安装软件包的功能。

1.2 Linux 软件生态
1.2.1 对一个软件的下载分为
- a. 网络下载,b. 安装 (安装本质就是拷贝);
- 必须使用root权限;
- 是安装到系统里面,之安装一次,任何人都能使用;
- 对一个软件的下载,不仅需要下载这个软件,对于这个软件所依赖的各种东西,都需要一并进行下载和安装。
- 所以包管理器 的好处就体现在它会帮我们自动解决依赖问题。

1.2.2 操作系统的好坏评估 --- 生态问题

1.2.3 为什么会有人免费提供特定的社区、软件,还发布?还提供云服务器让你下载?

1.2.4 国内镜像源

- 关于国内Linux软件安装源的官方链接用户可自行查询
1.3 yum 具体操作
1.3.1 查看软件包
通过 yum list 命令可以罗列出当前⼀共有哪些软件包. 由于包的数⽬可能非常之多, 这⾥我们需要使⽤grep 命令只筛选出我们关注的包. 例如:
cpp
# Centos
$ yum list | grep lrzsz
lrzsz.x86_64 0.12.20-36.el7 @base
# Ubuntu
$ apt search lrzsz
注意事项:
-
软件包名称: 主版本号.次版本号.源程序发⾏号-软件包的发⾏号.主机平台.cpu架构.
-
"x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包. 选择包时要和系统匹配.
-
"el7" 表示操作系统发行版的版本. "el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6.
-
最后⼀列, base 表示的是 "软件源" 的名称, 类似于 "小⽶应用商店", "华为应用商店" 这样的概念.
-
Ubuntu 有上述有详细介绍
cpp$ apt show lrzsz Package: lrzsz Version: 0.12.21-10 Priority: optional Section: universe/comm Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Martin A. Godisch <godisch@debian.org> ...
1.3.2 软件安装
cpp
# Centos
$ sudo yum install -y lrzsz
# Ubuntu
$ sudo apt install -y lrzsz
# 加入 -y 指令,可跳过确认提示
# 没有 -y 选项,执行后会显示提示
- yum/apt 会⾃动找到都有哪些软件包需要下载, 这时候敲 "y" 确认安装.
- 出现 "complete" 字样或者中间未出现报错, 说明安装完成.
注意事项:
- 安装软件时由于需要向系统⽬录中写⼊内容, ⼀般需要 sudo 或者切到 root 账⼾下才能完成.
- yum/apt安装软件只能⼀个装完了再装另⼀个. 正在yum/apt安装⼀个软件的过程中, 如果再尝试⽤yum/apt安装另外⼀个软件, yum/apt会报错.
- 如果 yum / apt报错, 请自行百度.
1.3.3 软件卸载
cpp
# Centos
sudo yum remove -y lrzsz
# Ubuntu
sudo apt remove -y lrzsz
1.3.4 注意事项
关于 yum / apt 的所有操作必须保证主机(虚拟机)⽹络畅通!!!
可以通过 ping 指令验证:
cpp
例如执行:
ping www.baidu.com
1.4 安装源
Cetnos 安装源路径:
cpp
$ ll /etc/yum.repos.d/
total 16
-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 安装源路径:
cpp
$ cat /etc/apt/sources.list # 标准源
$ ll /etc/apt/sources.list.d/ # 扩展源
2. 编辑器Vim
2.1 vim的基本概念
vim是一款多模式的编辑器,最常见的三种模式分别是:命令模式(Normal 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
2.2 vim 的基本操作

- 当首次 # vim test.c 进入vim时,此时vim默认处于命令模式,
- 若想正常写代码,需从命令模式切换到插入模式,输入i,就可切换
- 在插入模式下若想退出则需要从插入模式回退到命令模式,按Esc键,就可切换,那么处在命令模式下直接按两下处于大写模式下的Z键就可退出。但是因为ZZ这种操作方式不显示,所以我们以另一种退出操作为主,即从命令模式切换到底行模式再退,Shift键 + ;键就可切换(即输入 ' :')。进入底行模式后, w(保存当前文件)、wq(输入[ wq ]存盘并退出vim)、q!(输入q!,不存盘强制退出vim)。同样的Esc键可返回。
1. 进入vim
- 在系统提⽰符号输⼊vim及⽂件名称后,就进⼊vim全屏幕编辑画⾯
- $ vim test.c
- 不过有⼀点要特别注意,就是你进⼊vim之后,是处于[命令模式],你要切换到[插⼊模式]才能够输⼊⽂字。
2. [命令模式]切换至[插入模式]
- 输⼊a
- 输⼊i
- 输⼊o
3. [插入模式]切换至[命令模式]
- ⽬前处于[插⼊模式],⼀直输⼊⽂字后,如果发现输错了字,想⽤光标键往回移动,将该字删除,可以先按⼀下「ESC」键转到[命令模式]再删除⽂字。当然,也可以在插入模式下直接删除。
4. [命令模式]切换至[底行模式]
- 「shift + ;」, 其实就是输⼊「:」
5. 退出vim
在[命令模式]下,按⼀下「:」冒号键进⼊「Last line mode」,例如:
- : w (保存当前⽂件)
- : wq (输⼊「wq」,存盘并退出vim)
- : q! (输⼊q!,不存盘强制退出vim)
2.3 vim 命令模式的命令集
1. 命令模式转插入模式
- 按「i」切换进⼊插⼊模式「insert mode」,按"i"进⼊插⼊模式后是从光标当前位置开始输⼊ ⽂件;
- 按「a」进⼊插⼊模式后,是从⽬前光标所在位置的下⼀个位置开始输⼊⽂字;
- 按「o」进⼊插⼊模式后,是插⼊新的⼀⾏,从⾏⾸开始输⼊⽂字。
2. 从插入模式切换为命令模式
- 按「ESC」键。
3. 光标移动

- vim可以直接⽤键盘上的上下左右键来移动光标,但正规的vim是用小写英文字母「h」、「j」、 「k」、「l」,分别控制光标左、下、上、右移⼀格
- 按「G」:移动到文章的最后
- [ n ] +「G」:移动到第n行的行首
- 按「 $ 」:移动到光标所在行的"行尾"
- 按「^」:移动到光标所在行的"行首"
- 按「w」:光标跳到下个字的开头,即以一个英文单词为单位向右移动
- 按「e」:光标跳到下个字的字尾
- 按「b」:光标回到上个字的开头,即以一个英文单词为单位向左移动
- 按「#l」:光标移到该⾏的第#个位置,如:5l,56l
- 按[gg]:进入到文本开始
- 按[shift+g]:进⼊⽂本末端,即按[ G ]
- 按「ctrl」+「b」:屏幕往"后"移动一页
- 按「ctrl」+「f」:屏幕往"前"移动一页
- 按「ctrl」+「u」:屏幕往"后"移动半页
- 按「ctrl」+「d」:屏幕往"前"移动半页
4. 删除文字
- 「x」:每按⼀次,删除光标所在位置的⼀个字符
- 「#x」:例如,「6x」表示删除光标所在位置的"后面(包含自己在内)"6个字符
- 「X」:⼤写的X,每按⼀次,删除光标所在位置的"前⾯"⼀个字符,即光标左侧的字符,
- 「#X」:例如,「20X」表⽰删除光标所在位置的"前⾯"20个字符,此处将选中的20个字符删除后,也可接着进行p粘贴操作,将选中删除的20个字符粘贴出来,类似局部剪切。

- 「dd」:截切当前行或者删除行
- 「#dd」:从光标所在行开始删除#行。若执行5dd指令,即在光标所在行开始删除5行,结合p键,可将删除的那5行代码复制出来,再按p键则再复制被删掉的那5行代码一次
5. 复制
- 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
- 「#yw」:复制#个字到缓冲区
- 「yy」:复制光标所在行
- 「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
- **「p」:在光标所在位置进行粘贴。**注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。
6. 替换
- 「r」:替换光标所在处的字符。
- 「R」:进入REPLACE(替换模式),批量化替换,替换光标所到之处的字符,直到按下「ESC」键为止。
- [ Shift ] + [ ~ ]:大小写切换,Shift键按住不动,连续按 ~键可实现连续依次切换
7. 撤销上一次操作
- **「u」:撤销历史操作。**如果您误执⾏⼀个命令,可以⻢上按下「u」,回到上⼀个操作。按多次"u"可以执⾏ 多次回复。
- 「ctrl + r」: 撤销的恢复
- 注意:一旦退出文件编辑,就无法再进行撤销了,但是如果只是保存而没有q退出,则还可以撤销。
8. 更改
- 「cw」:更改光标所在处的字到字尾处
- 「c#w」:例如,「c3w」表⽰更改3个字
9. 调至指定的行
- 「ctrl」+「g」列出光标所在⾏的⾏号。
- 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
2.4 V-BLOCK (视图模式)

此模式的批量化注释等操作比较实用
1. 若想批量化注释第8到第18行

a. 在NORMAL模式下,先将光标指向第八行,ctrl + v 进入 V-BLOCK模式,然后通过h j k l 键进行上下左右的光标选定,如下图所示:
b. 区域选择后,通过shift + i 键 转而进入插入模式,如下图所示

c. 再输入//斜杠进行注释,如下图所示

d. 紧接着直接按Esc键,不仅可以做到批量化注释,还能回到命令模式,如下图所示

2. 代码全部注释
同理于上述操作步骤,先在NORMAL模式下将光标指向第一行开头,ctrl + v, 进入V-BLOCK模式,然后shift + g,实现全部行选中,再shift + i,进入INSERT模式,输入//斜杠注释,最后Esc键,实现全部注释,回到NORMAL模式。同样撤销可按u键,反悔刚刚的撤销,同样可再ctrl + r。
3. V-BLOCK模式下的光标操作
也可多列选择,进行批量增删查改注释操作

其他的光标移动和操作指令,与上文中描述一致,此处不再赘述。


。



2.5 vim 底行模式命令集
在使用底行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入底行模式。
1. 列出行号
- 「set nu」: 输⼊「set nu」后,会在⽂件中的每⼀⾏前⾯列出⾏号。
- 「set nonu」: 输⼊「set nonu」后,会在⽂件中的每⼀⾏前⾯列出⾏号。
2. 跳到文件中的某⼀⾏
- 「#」:「#」号表⽰⼀个数字,在冒号后输⼊⼀个数字,再按回⻋键就会跳到该行了,如输⼊数字15,再回车,就会跳到⽂章的第15行。
3. 查找字符
- 「/关键字」: 先按「/」键,再输⼊您想寻找的字符,如果第⼀次找的关键字不是您想要的,可以⼀直按「n」会往后寻找到您要的关键字为⽌。
- 「?关键字」:先按「?」键,再输⼊您想寻找的字符,如果第⼀次找的关键字不是您想要的,可以⼀直按「n」会往前寻找到您要的关键字为⽌。
- 问题:∕ 和 ?查找有和区别?操作实验⼀下
4. 保存文件
- 「w」: 在冒号输⼊字⺟「w」就可以将⽂件保存起来
5. 外部命令过滤器
在 Vim 中,!command 是 外部命令过滤器 功能,它允许你将 Vim 缓冲区中的文本通过外部 Shell 命令处理,并用结果替换原始文本。
基本语法:
cpp
[范围] ! 外部命令
- 无范围:对当前行执行
- 有范围:对指定范围内的所有行执行
示例:
1. 排序文本
cpp
:1,10!sort # 对第1-10行排序
:%!sort # 对整个文件排序
:!sort # 对当前行排序(没什么意义)
2. 格式化文本
cpp
:%!fmt # 格式化段落(调整行宽)
:%!fold -w 60 # 每行最多60个字符
:%!column -t # 对齐表格(制表符分隔)
:%!pr -2 # 分两列显示
6. 全局替换命令
cpp
:%s/dst/src/ # 基本形式(仅替换每行第一个匹配)
:%s/dst/src/g # 正确形式(替换所有匹配)
示例:
cpp
示例文本
dst and dst and dst
dst here dst there
执行 :%s/dst/src/
src and dst and dst # 第一行只替换第一个
src here dst there # 第二行只替换第一个
若加上g
执行 :%s/dst/src/g
src and src and src # 第一行全部替换
src here src there # 第二行全部替换
7. vs 指令可实现分屏多文件操作

a. 光标在哪边就是对哪边的文件进行操作。
b. 当光标处于左边文件,按住ctrl 同时 按两下w键,可将光标切换至右边文件。
8. 离开vim
- 「q」:按「q」就是退出,如果⽆法离开vim,可以在「q」后跟⼀个「!」强制离开vim。
- 「wq」:⼀般建议离开时,搭配「w」⼀起使⽤,这样在退出的时候还可以保存⽂件。
2.6 操作总结
1. 三种模式
- 命令模式
- 插⼊模式
- 底行模式
2. vim⼀共有12种总模式,其余模式在此不做介绍
3. vim 操作
- 打开,关闭,查看,查询,插⼊,删除,替换,撤销,复制等等操作。
2.7 vim 其他命令补充
cpp
# 让test.c在vim中打开时,自动让光标定位在第n行
vim test.c n
