Vi 和 Vim
Vi 是 Linux 操作系统默认的文本编辑器。
Vim 是 Vi 的加强版。不仅可以做简单的文字编辑,它也有颜色高亮,语法提示等特性,可以用作编程。
现在大部分的 Linux 发行版都同时包含 Vi 和 Vim。
在 Linux 操作系统中,Vim 是必须掌握的一个工具:
- 作为命令行模式下的文本编辑器非常好用
- 大部分 Linux 软件都支持 Vim 的接口,使用 Vim 编辑配置时会有良好的高亮提示
- 用熟练以后可以完全脱离鼠标操作,做到键字如飞
Vim 要做到熟练使用不是一件容易的事。
对于一般用户来说要求不用那么高,能完成简单文字的编辑需求就行。就好像小学上微机课,会打开 Word,能打字,保存,退出,就够用了。
我的要求也不高,只要能用它来编辑一些配置文件,写一些简单的 shell 脚本就行了。
我们以案例带学。先来看第一个案例。
练习1:打开编辑器,输入一首古诗,并保存
在终端中,输入 vim
命令,就会打开编辑器,出现如下界面,就说明进入编辑器了:
打开编辑器后,就能打字了吗?
No,先来了解一个概念,弄清楚这个概念后,才能真正上手 Vim 进行编辑工作。
这个概念就是 Vim 的模式。
Vim 的三种模式
什么是模式嘞?人家别的编辑器不是打开就能写东西了吗?
Vim 就是这么与众不同。
Vim 提供了三种模式,相互配合才能完成文件的编辑工作:
- 命令模式(Command Mode):当在终端中执行
vim
,或者使用vim
命令打开一个文件时,进入该模式 - 编辑模式 / 插入模式(Insert Mode):在 命令模式下,按下
I/i
、O/o
、A/a
、R/r
任意一个,进入该模式 - 命令行模式(Command-line Mode):在命令模式下,按下
:
、?
、/
进入该模式
注意区分命令模式和命令行模式,一字之差,作用不同。
这三个模式,命令模式下按相应的键位可以进入编辑模式和命令行模式;编辑模式和命令行模式按 ESC
可以回到命令模式;但是编辑模式和命令行模式不能相互进入。
用一张图表示就是:
我们来做一个简单的演示,方便理解这几种模式究竟是做什么用的。
命令模式
在终端中执行 vim
命令,打开 Vim:
$ vim
此时就处于命令模式,光标位于空文件的起始位置:
命令模式可以看作是进入其他模式的中转站。
编辑模式
注意此时的输入法,必须是英文输入法。按下键盘上的 i
,左下角出现 -- Insert --
,进入编辑模式:
此时就可以通过上下左右箭头来移动光标,并输入文字了。
记住第一个要点:要想使用 Vim 输入内容,必须左下角出现 -- Insert --
才可以。
输入一首古诗吧:
在输入的过程中会发现,虽然光标一直动,但是屏幕最底下一行的位置并没有改变。一定要注意,最下面的一行并不属于文本内容,而是状态栏,显示编辑器的一些状态信息,比如当前处于何种模式,光标的位置,文件名等等。
当完成文本内容的输入,想要保存文件并退出。
还记得上面说的吗,命令模式是中转站,可以进入其他模式;编辑模式和命令行模式不能相互进入。
所以,此时就要先按 ESC
回退到 命令模式,再按 :
,也就是 shift + ;
,右下角会出现一个:
,进入命令行模式:
命令行模式
保存文件的命令是 w
,write
的缩写,意思是将文本写入硬盘进行保存。千万不要记成是 s
(save
) 了。
退出编辑器的命令是 q
,quit
的缩写。
在命令行模式下,输入 wq
,就能退出并保存了:
此时会给出一个提示:
意思是当前编辑的文本没有文件名。因为刚才我们直接打开的编辑器,而不是打开的一个文件,所以在退出时就提示了指定一个文件名进行保存。
此时,再此按 :
,进入命令行模式,输入 wq
并指定一个文件名:
回车之后,Vim 就能保存为文件,并退出了。
查看刚刚创建的文件,cat
命令用于查看文件的内容:
小结
到这里,我们基本上掌握了 Vim 编辑器的简单使用,主要是熟悉它的使用流程,先进入的是命令模式,要打字就进入编辑模式,要保存就先退回到命令模式,再进入命令行模式保存和退出。
虽然文字看上去,话说上去,啰七八嗦的,但是流程实际走下来,会发现其实并不复杂。
练习2:打开1.txt,给古诗添加题目,然后删除掉多余的拼音
在命令行中,执行 vim <文件名>
就可以打开该文件:
$ vim 1.txt
默认进入命令模式,可以看到状态栏提供的一些信息:当前文件名是 1.txt,共有4行内容,86个字符,光标位于第二行第一列,当前页面中显示了全部的内容:
添加标题,需要进入编辑模式,按 i
进入,然后输入题目即可:
删除括号内注音,需要先将光标移动到合适位置,然后按 Backspace
进行删除:
如果在删除时不小心,多删了一些文本,就需要用到撤销的功能了。
此时要回到命令模式,按 u
,就能撤销刚才的操作了。
在命令模式下,移动光标有两种方式,一是按 H
、J
、K
、L
,二是按上下左右箭头。一般更推荐前者,因为可以保持右手始终在键盘的输入区,稍微提高一些输入效率。但是编辑模式下,只能使用箭头键移动光标。
在命令模式下,要删除内容,就不能使用 Backspace
了,要使用 Delete
键。
所以要删除刚才的括号,除了在编辑模式下,我们还可以退回到命令模式,使用 HJKL
移动光标,使用 Delete
来删除。
然后保存文件,按 :
进入命令行模式,输入 wq
再回车:
现在查看下修改后文件的内容:
小结
这个练习,除了复习了各个模式的切换之外,也介绍了在命令模式下一些常用的命令,比如 u
是撤销,delete
删除。
总结
本文介绍了在 Linux 操作系统下 Vim 编辑器的简单使用,介绍了它的三种工作模式,各个模式的作用和用法。
然后通过两个简单的案例,基本上掌握了编辑一个文件的基本操作流程。Vim 还有很多常用的命令,比如从命令模式进入编辑模式,有8种不同的进法,现在只介绍了最常用的 i
。比如如何复制粘贴文本,如何查找关键字等等,我们会在后面的文章中介绍。