前言
vim 是从vi发展出来的一个文本编辑器。其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是V
i IM
itation,随着功能的不断增加,正式名称改成了V
i IM
proved。不过很多人在实际使用的时候,还是习惯使用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