前言

vim 是从vi发展出来的一个文本编辑器。其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。不过很多人在实际使用的时候,还是习惯使用Vi命令,因此在很多Linux版本中,系统对Vim做了一个别名还是叫Vi。

Vim是一个功能强大的全屏幕文本编辑器,不仅可以用于编辑文本,在编程方面也是非常强大,Linux/UNIX系统都会默认安装这个编辑器。正因为Vim的强大,会有很多命令需要学习,这里只介绍些常用的命令,在满足日常的文本编辑需求的同时,还能显著提高效率。

概念介绍

vim 有三种基础工作模式,分别是普通模式,插入模式 和 命令行模式。

普通模式

Vim启动后的默认模式,此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。不管用户处于何种模式,只要按一下 ESC 键,即可使Vim进入普通模式。

插入模式

这个模式和我们平时使用的编辑器是一样的,用户输入的任何字符都被 Vim 当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到普通模式,按 ESC 键即可。

命令行模式

在普通模式下按下 :/ 或者 字符,这时你会看到窗口的左下角出现了相应的字符 ,代表你已经进入命令行模式可以进行命令的输入,输入的命令会出现在字符后面,按回车就会执行相应的命令。

三种基本模式转化示意图

插入命令

在普通模式下,输入下述命令,会进入插入模式,然后就可以进行文本的输入。

命令 作用
a 在光标所在字符后插入
A 在光标所在行尾插入
i 在光标所在字符前插入
I 在光标所在行首插入
o 在光标下插入新行
O 在光标上插入新行

保存和退出命令

在执行插入命令完成文本编辑后,按 ESC 退出插入模式,进入普通模式。如果想要保存文件并退出,即下述命令的 :wq,此时输入:(英文冒号)进入命令行模式,然后输入 wq 保存文件并退出。ZZ 命令是在普通模式下,按 shift+Z 两次即可。

命令 作用
:w 保存修改
:w new_filename 另存为指定文件
:wq 保存并退出
ZZ 保存并退出
:q! 不保存修改退出
:wq! 保存修改并退出(文件所有者及root可使用)

如下动图首先新建了一个文件,然后通过vim打开,按下 i 键进行输入文本,然后按下ESC键进入普通模式,最后输入:wq保存退出。

插入和保存退出示意图

定位命令

在普通模式下,分别执行如下命令,可以做到快速定位。

命令 作用
: set nu 设置行号
: set nonu 取消行号
gg 到第一行
G 到最后一行
nG 到第n行
: n 到第n行
$ 到行尾
0 到行首

动图中(注意光标的位置),首先打开了一个文件,然后输入 :set nu 显示行号,然后键盘按下G(shift+g)命令到最后一行,然后按gg到第一行,输入:3 到第三行,按 $ 到行尾,按下 0 到行首,然后输入 :set nonu 取消行号,最后输入 :q 退出。

定位命令示意图

替换和取消命令

在普通模式下,可以执行如下命令,实现替换和取消。

命令 作用
r 取代光标所在处字符
R 从光标所在处开始替换字符,按ESC结束
u 取消上一步操作

动图中,打开了一个文本文件,然后键盘按下 r 键,然后输入 0 替换了文本文件中的 i 字符。按下 R 键(shift+r),可以从光标处连续替换字符。最后按下了 ESC 键,进入普通模式,最后连续按 u 键,取消上一步操作。最后输入 :q,退出vim。

替换取消命令示意图

复制和剪切命令

普通模式下,按下如下命令,即可实现快速的复制粘贴。

命令 作用
yy 复制当前行
nyy 复制当前行以下n行(含当前行)
dd 剪切当前行
ndd 剪切当前行以下n行(含当前行)
p / P 粘贴在当前光标所在行下 / 上

如下动图中,首先打开了一个文件,按 ↑键 将光标移动到第一行,键盘按下 yy 命令,复制第一行内容,然后将光标移动到最后一行,按了三次 p命令,进行粘贴,最后输入 :wq 退出。

复制剪切命令示意图

删除命令

在普通模式下,输入如下命令,即可实现快速的文本删除。

命令 作用
x 删除光标所在处字符
nx 删除光标所在处后的n个字符
dd / ndd 删除光标所在行 / 光标后n行
dG 删除文件所在行到文件末尾内容
D 删除光标所在处到行尾内容
:n1,n2d 删除指定范围内的行

如下动图中,首先通过vim打开一个文件,然后按下 x 键删除光标处内容,然后按下 dd 删除三行内容,再按下 2dd 删除两行内容。

删除命令示意图

搜索和替换命令

普通模式下,输入如下命令,可以快速完成文档中的内容搜索和替换操作。

命令 作用
/string 搜索指定字符串,搜索时指定忽略大小写 :set ic
n 搜索指定字符串的下一个出现位置
:%s/old/new/g 全文替换指定字符串
:n1,n2s/old/new/g 在一定范围内替换字符串

如下动图中,首先打开了一个文件,然后输入了 /love 进行查找,然后输入了 :%s/hate/love/g 进行全文替换。

搜索替换命令示意图

总结

本文介绍了Linux中vim相关的操作,主要包含以下内容:

  • vim的三种基本模式
  • 插入命令
  • 保存命令
  • 定位命令
  • 替换和取消命令
  • 删除命令
  • 搜索和替换命令

命令比较多,不需要死记硬背,使用的多了,也便记住了。

更多

微信公众号:CodePlayer