(5)软件包管理器 yum | Vim 编辑器 | Vim 文本批量化操作 | 配置 Vim

Ⅰ . Linux 软件包管理器 yum

01 安装软件

在 Linux 下安装软件并不像 Windows 下那么方便,最通常的方式是去下载程序的源代码并进行编

译,从而得到可执行程序。

正是因为太麻烦,所以有些人就把一些常用的软件提前编译好并做成软件包,放到服务器上。

你只需要通过包管理器,就可以轻而易举地获取到这个编译好的软件包,直接无脑安装。

02 安装软件的方式

Centos 中安装软件分为三种方式:① 源码安装rpm 包安装yum 安装

源码安装:

源码安装就相当于我把项目源代码交给用户,让用户自己编译

rpm 包安装:

可以理解为 Linux 下的安装包,但下载好 rpm 包后想安装还需要用到 rpm 命令,比较麻烦,而且 rpm 包安装不会帮你解决依赖关系

yum 安装:

我们刚才讲的安装方式都不简单,如果只有源码和 rpm 包这两种安装方式,就连开发者用起来都头大,那更别说用户了。

于是 Linux 就推出了一个简单的集成化安装方案 ------ yum 安装。

yum 安装最大的好处显而易见,不用编译源码,且不用解决软件的依赖关系。

03 试着安装一款软件

有一个叫 sl 的小工具,这个工具是可以在命令行跑 "火车头" 的软件。

在大家的系统中默认情况下是没有这个软件的,现在正好可以来试试用 yum 安装:

复制代码
# yum install sl

此时我们输入 sl 看看效果如何:

由此可见,用 yum 安装软件非常de简单,下面我们来仔细讲解一下 yum 。

04 yum 指令

我们要安装别人的软件,需要做的准备工作:

① 需要别人先把代码给我编译成可执行程序。

② 需要有人将编好的软件,放在用户能下载的地方

在 Linux 也是一样的!以手机应用市场为例:

你手机上的 APP 是属于客户端还是服务器?

手机上的 APP 实际上是客户端,而不是服务器。云服务器相信大家并不陌生,我们所用的 XShell 其实就是一个客户端,我们登陆的是远端的服务器。

**总结:**yum 就类似于手机上的应用市场。

既然要安装软件,我们得知道软件的名字是什么,如果我们不知道软件叫什么那么自然也没法装。

这就是为什么手机应用市场有应用推荐这个功能,按类别去给你推荐软件供你下载。

然而 Linux 下我们可以通过 yum list 指令去执行类似于手机应用市场的 "软件推荐" 功能:

复制代码
yum list

05 卸载软件 yum remove

yum 既然能安装软件,自然也是能卸载软件的。

复制代码
# yum remove [目标]

06 yum 源

yum 在下载时是怎么知道去哪里搜的呢?

因为 /etc/yum.repos.d 目录下存有配置文件:

不是所有人的 Linux 上面的 yum 源都是国内的链接。

如果你不是国内的,或者发现安装软件特别慢,建议大家更新一下 yum 源。

07 文件上载工具:lrzsz

Irzsz:一款可以轻松地将 Window 的文件上载到 Linux 的神器。

如果你想把 Windows 下的东西传到 Linux 下,有了这个工具就可以直接拖拽

Ⅱ . Vim 编辑器

01 什么是 Vim

它是一个编辑器!只能用来写代码,编译 vim 也做不到,有其他工具帮我们做。

既然只能用来写代码,那我们为什么不用 nano 记事本呢,不都一样吗?

当然不一样,Vim 功能强大,是一个多模式的编辑器。因为过于强大,学习成本固然较高。

你可以输入 vim 确认一下你有没有安装过 vim,若显示 bash: vim: command not found ,

那就说明还没有安装 vim,我们用刚刚学习的 yum 安装一下即可

02 vim 的使用

我们先创建一个 code.c 源文件:

复制代码
$ touch code.c

随后输入 vim 跟上文件名,就可以用 vim 编辑器打开该文件了:

复制代码
$ vim code.c

03 默认模式、底行模式和插入模式

进入之后,此时你会发现是输入不了任何东西的:

因为第一次打开 vim 时的命令模式为**"默认模式"**

如果我们现在什么都没干,想退出 vim,我们可以按下 shift + 冒号 ,此时:

此时该模式我们称之为 "底行模式",此时如果你想退出 vim,在该模式下按一个 q 即可。

由于此时什么都没有写,我们按 q 退出。如果写了东西并且想保存并退出,我们可以按 wq

我们刚才进去 vim 之后时输入不了任何东西的,这是因为处于默认模式。

当我们按下 i 键(进入了 "插入模式")后左下角会显示 :

此时我们就可以正常打字了:

如果想退出,我们要输入键盘上的 Esc 按键 ,此时再按冒号就可以回到底行模式:

当然,如果你想从底行模式再回到命令模式,也是使用 Esc 就可以回去。

退出去之后我们来 cat 一下看看我们刚刚写的内容:

**总结:**任何模式想回到命令模式,无脑 Esc 即可。

Ⅲ . Vim 文本批量化操作

01 复制和粘贴(yy & p)

|--------|-------------------------------|
| 指令 | 操作 |
| yy | 复制光标指定的当前行内容 |
| p | 粘贴 yy 复制的内容,默认粘贴到当前行后面(可光标指定) |

在文本操作的时候我们可能会需要对文本进行批量化操作,比如删除、复制粘贴等功能,

这些在插入模式下是比较难做到的,我们一般会在命令模式下进行文本批量化操作。

**操作演示:**文本的复制和粘贴,如果我们想复制下面的 printf 代码,我们可以:

在光标所在行 yy 进行复制,随后你可以把光标移到你想粘贴的位置按 p 进行粘贴,直接按 p 默认在 yy 复制行的下一行粘贴。你按几次 p 就会粘贴几次。

02 批量化复制和粘贴(nyy & np)

|----------|-----------------------------------|
| 指令 | 操作 |
| [n] yy | 复制光标指定的当前行(包括当前行以内的)n 行内容 |
| [n] p | 粘贴 n 份 yy 复制的内容,默认粘贴到当前行后面(可光标指定) |

如果我想粘贴 50 次,我难道要按 50次 p 吗?

当然不用,我们可以使用批量化粘贴 的功能:

**操作演示:**此时输入如果想粘贴 50 份,我们可以输入 50p :

对应的,还有批量化复制 的功能,如果我们想让这两行复制:

我们可以光标选中第一个 printf 并输入 2yy,此时就复制了包括它本身以内的 2 行内容。

此时我们在 p 一下,我们就可以把这两行粘贴出来了:

03 剪贴操作(dd & p)

|----------|-----------------------|
| 指令 | 操作 |
| dd | 剪贴光标指定行内容 |
| [n] dd | 剪贴光标指定行(包括当前行)的 n 行内容 |

**操作演示:**将 printf 剪贴到 return 0 后面

dd 也可以当删除去使用,只要不 p 就等于是删除的效果了。

04 撤销操作和收回撤销(u & Ctrl + R)

|----------|--------------------|
| 指令 | 操作 |
| u | 撤销刚刚的操作 |
| Ctrl + R | 对撤销进行撤销(收回 u 撤销操作) |

**操作演示:**按 u 撤销

我想收回刚才的 u 撤销,怎么办? Ctrl + R!

对于你的最近两次的误操作,你可以使用 u 和 Ctrl + R 在两个操作之间来回跳转。

05 光标跳转(gg & Shift + gg & n + Shift + gg)

|-----------------|---------------------|
| 指令 | 操作 |
| shift + g | 光标快速定位到文本末尾 |
| gg | 光标快速定位到文本的最开始 |
| [n] shift + g | 将光标快速定位到文本的任意 (n) 行 |

为了方便我们讲解,我们先创建一个大文本的场景。

当文本一旦大了,我想让光标快速定位到文本的最尾部,该如何操作?

操作演示:

shift + g 跳转至文本最后一行

gg跳转至文本第一行首位置

③ 如果我想定位到第 123 行呢?123 + shift + g 即可!

如果想让光标跳到当前所在的文本行开头呢?

|------------|------------------------------|
| 指令 | 操作 |
| shift + | 光标快速定位到文本行的末尾(我们称 为 "锚点" ) |
| shift + ^ | 光标快速定位到文本行的开始 |
| w / b | 以单词为单位移动(warp 与 back) |

操作演示:

06 方向键(HJKL)

我们是可以通过键盘上的方向键去进行光标移动的。

但是我们是不太推荐用上下左右键去进行光标移动的,我们建议用 "HJKL"

|--------|--------|
| 指令 | 操作 |
| h | 左 |
| j | 下 |
| k | 上 |
| l | 右 |

为什么建议使用 HJKL而不使用我们一直习惯的**↑ ↓ ← →** 呢?

因为我们会学一些组合命令,比如批量化注释,它只能支持用 HJKL。

至于为什么 vim 它的上下左右是这几个按键呢?

老式键盘是没有上下左右键的,以前就是那 HJKL 充当 上下左右键的

07 一些修改和替换操作(Shift ~ & r & nr)

|------------|-------------------|
| 指令 | 操作 |
| shift + ~ | 大小写快速切换 |
| r | 替换光标所在位置的字符 |
| [n] r | 替换光标所在位置开始的 n 个字符 |

我们现在想让这些字母大小写互换:

按住 shift 不动 + 波浪号 ~ 即可将光标位置字符进行大小写的转换。

在想要替换的光标处,先输入一个 r,然后再输入你要替换的字符,此时就可以做到修改。

我们甚至还可以批量化修改,在 r 前加上数字。

08 replace 模式

输入 shift + r 进入 replace 模式:

进入 replace 模式后,光标所在处直接输入即可替换,你的所有输入的都会直接替换。

09 删除和批量化删除(x & nx)

|---------|------------------|
| 指令 | 操作 |
| x | 删除当前光标位置字符 |
| [n] x | 删除当前光标位置开始的后n个字符 |

如果我们要删除,我们可以按 X,如果要批量删除可以输入 nX(底行模式下)

Ⅳ . 配置 Vim

01 默认的 Vim 配置

大家有没有发现好像用起来很不方便

默认的 vim 没有配置,没有提示、没有缩进、没有行

我们先这里提供一个能够直接输入指令一键配置的方法,让大家先能用起来,

至于具体的 vim 配置学习我们会放到后面去讲解。

02 一键配置

直接复制下面的文字,shift+insert 粘贴到命令行:

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