一 vim文本编辑器
在正式开始介绍vim之前,先思考一个问题:学编程语言,前前后后装了这么多东西,这些东西都是做什么的?
1.1 python“随从”们

无论脚本语言还是编译型语言,编码的时候,我们都需要使用人类语言进行编写,但运行的时候都需要转化为二进制。脚本语言是在每次运行时,由解释器将人类语言(代码)转化为二进制的。python就属于脚本类语言。
在学习python时,我们都安装了哪些东西?学python,至少会安装两个东西:
-
从python官网下载一个
python安上
python -
找个
pycharm或者vscode其他的安装上
pycharm
作用:
- 官网下载的
python
你安装python时,并不是安装了一门语言叫python。编程语言本身是不需要安装的。你安装python时,其实是安装的我们上文所说的。而python官方主要的工作,就是开发这个解释器、以及制定语言的语法。
-
pycharm或vscode
python并不是必须使用pycharm或vscode才能编写,也不是必须基于某个特别开发的软件才能编写;基于任何文本编辑器都可以写python。区别在哪?区别在文本编辑器提供的插件功能,是不是具有python语法的支持,如果有支持,那么可以自动补全,可以帮我们检查我们是不是写错了;如果没有语法支持,也可以写,但就需要自己从头写到尾,并且自己检查自己是不是写错了,否则就只能等着执行的时候看看是不是错了。
执行的时候错了,就是第一步,python解释器给报出来的错了;书写的时候,是文本编辑器给检查和提示的错误
1.2 奉若神明的Vim
Vim的作者刚刚去世(2023-08-03)。去世当天社区很多人发表纪念。vim编辑器在linux中是经常使用的编辑器,也是类UNIX系统中,普遍随系统自带的编辑器。初学的时候有人会对它各种鄙视、甚至恨之入骨;但遇到一些极端情况后,就会庆幸系统里还有Vim。

Vim的缺点是,真正想用熟练比较难,因为有好多需要记忆的东西。快捷操作比较多,不太会的人一通乱按,很可能不知道进了哪个模式,把文件搞乱。显示的也不像现代编辑器那样美观。
优点:
- 有很多快捷键,几乎不需要鼠标的参与。当我们为专业人士设计软件时,如果讲究操作速度,都会提出无鼠标化操作。比如某些财务软件。当追求快速操作时,拿鼠标一下一下点,很让人崩溃。
- 无需
GUI。GUI可以理解为界面。Vim是使用全命令行操作的,这就代表了它可以运行在全命令行(server)linux上。这在某些情况下是非常重要的,比如小型嵌入式linux系统(性能不足以长时间支撑桌面环境)、需要远程连接和操作服务器时、桌面环境无法打开的情况。
1.3 ubuntu使用Vim
1.3.1 安装
系统安装完成后,自带的编辑器是vi,vi是Vim的精简版本(毕竟少了个m);我们需要安装一下vim。

当在windows下,我们说个安装软件,有些时候会头疼,但这个过程在linux下,很多时候要简单很多。运行命令如下,注意:确保系统可以连接网络。
sudo apt update && sudo apt install vim -y

1.3.2 使用
启动命令:
# vim <文件名>
vim ./test.txt
要编辑的文件可以不存在,不存在的话,当你退出编辑并保存时,会自动创建一个文件。当刚刚打开一个文件时。显示信息如下:
- 底部从左到右,依次是
文件名、文件包含的行数、文件的大小; -
上部空白区域,为文件内容的显示区域,如果没内容是空白的。
打开一个文件
三种模式:
Vim提供了三种模式,每种有它自己的功能:命令模式、输入模式、末行模式。这三种模式中,我们对文本内容的主要编辑操作,是在输入模式下完成的,其他两种模式,主要是为了提供一些快捷操作、必要操作设置的。快捷操作主要集中在命令模式下,也是Vim难学难记的核心。但我们只需要几个简单的命令即可。
打开文件,什么也不按下的情况下,是在命令模式。
三种模式,通过不同的操作进行切换。命令模式相当于父节点,输入模式和末行模式相当于子节点,子节点都是和父节点进行来回切换的。所以
- 能由
命令模式进入输入模式(按i,o或a),由输入模式返回命令模式(按Esc) - 能由
命令模式进入末行模式(按:),由末行模式返回命令模式(按Esc) -
输入模式和末行模式无法直接切换
三种模式的截图如下:
命令模式下,无法对文本进行编辑

按下i,o或a进入编辑模式,此时可以对文件进行编辑。成功进入编辑模式的特征,是底部会有一个--INSERT--的提示

在编辑模式下,按Esc,返回命令模式,再次变成无法编辑文本的模式,底部--INSERT--提示消失

在命令模式下,按下:,进入末行模式。在末行模式下:
- 输入
q!会放弃所有更改直接退出 - 输入
wq会保存并退出
末行模式
进入编辑模式各有不同
| 按键 | 进入编辑模式的状态 | 示意图 |
|---|---|---|
| i(不区分大小写) | 在光标当前位置进入编辑模式,新写入时从光标当前位置前写入 | ![]() i进入编辑模式光标位置
|
| a(不区分大小写) | 在当前光标的下一个字符开始编辑 | ![]() a进入编辑模式光标位置
|
| o(不区分大小写) | 在当前光标的下一行插入一个新行 | ![]() o进入编辑模式光标位置
|
一点快捷操作
-
显示行号
按:,需要进入末行模式。输入set number。 可以看到出现了行号。当我们进行代码修改的时候,有行号会方便很多。
显示行号 -
不显示行号也可以,显示后跳转方便一些。命令模式下,直接输入
nG,可以跳转到第n行。G得大写。6G
二 shell脚本文件
前面我们已经讲到过shell脚本,但我们前面的文章里,shell脚本都是在命令行里一条一条的敲进去的。那么,当我们实际需要运行多条指令、要每个周期执行重复的指令时,应该如何解决?
我们可以把脚本写入文件中,需要运行时,直接调用脚本文件即可。Linux中,脚本文件后缀为
.sh,windows中为.bat。因为是每次需要处理一批指令,而不是一条,所以也叫做批处理文件
vim ./test.sh
#!/bin/bash
ls
echo $PATH
sudo chmod +x ./test.sh
./test.sh
习题
请使用shell脚本文件,一次性分行输出你的:
- 用户名
- 主目录路径
- 默认的shell版本








