一、工作模式
普通模式
插入模式
命令模式
普通模式可以实现基本的光标移动与大量的快捷键操作;
插入模式可实现文本的基本编辑功能;
命令模式通过输入特定的指令实现特定的功能,如保存与退出。
默认情况下,系统不支持vim命令。
使用vi命令编辑文档,是没有彩色显示的。
可以通过如下命令安装vim编辑器,让显示更丰富
yum install -y vim
vi 和vim 的区别
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。
vim的这些优势主要体现在以下几个方面:
1、多级撤消
我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。
注意:在vi编辑器里面尝试,u也支持多级撤销
2、易用性
vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。
3、语法加亮
vim可以用不同的颜色来加亮你的代码。
4、可视化操作
就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
5、对vi的完全兼容
某些情况下,你可以把vim当成vi来使用。
vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding。
简单来说,vim相比vi编辑器,显示更好看,兼容性更好,更适合coding。
二、工作模式的转换
vim默认会创建一个新的文档,如果后面跟文件名参数,会判断文件是否存在,如果存在就打开,如果不存在,vi将创建该文件。
注意:
非正常关闭或有其他进程正在同时编辑该文件,导致swap文件没有清除,使用vi打开文件时,会提示:found a swap file by the name.
普通模式——>插入模式
vi编辑器默认进入普通模式,按i键进入插入模式。(还有其他的一些进入插入模式的方式,a,o这些感觉意义不大,不介绍)
回退到普通模式
通过Esc键
普通模式——>命令模式
在普通模式下,输入“:,/,?”,即可进入命令模式;
比如:
q!可以不保存,强制退出编辑器
转换关系示意图:
三、快捷操作
普通模式下,光标移动操作
快捷键 |
功能描述 |
0 |
数字0,将光标从所在位置移动到当前行的开头 |
$ |
将光标从所在位置移动到当前行的结尾 |
gg |
移动光标到文件首行 |
G |
移动光标到文件末尾 |
nG |
移动光标至n行 |
ngg |
移动光标至n行 |
n <Enter.> |
n为数字,<Enter.>为回车键,将光标从当前位置向下移动n行 |
显示行号:
命令模式下,set nu
普通模式下,搜索与替换操作
命令 |
说明 |
/key |
从光标位置开始,向下寻找名为key的字符串 |
?key |
从光标位置开始,向上寻找名为key的字符串 |
n |
从光标位置开始,向下重复前一个搜索的动作 |
N |
从光标位置开始,向上重复前一个搜索的动作 |
:s/root/admin/ |
将光标当前行中第一个出现的root替换为admin |
:s/root/admin/g |
将光标当前行中所有root替换为admin |
:3,5 s/root/admin/g |
将第三行至第五行之间的所有root替换为admin |
: %s/root/admin/g |
将所有行的root替换为admin |
普通模式下,复制、粘贴、删除等操作
命令 |
说明 |
yy |
复制光标所在的当前行 |
nyy |
n为数字,复制光标开始向下共n行 |
y1G |
复制游标所在行到第一行的所有数据 |
yG |
复制游标所在行到最后一行的所有数据 |
y0 |
复制光标所在的那个字符到该行行首的所有数据 |
y$ |
复制光标所在的那个字符到该行行尾的所有数据 |
p/P |
p将已复制的数据粘贴到光标的下一行,P则为粘贴到光标的上一行 |
dd |
删除光标所在的当前行 |
ndd |
n为数字,删除从光标开始向下共n行 |
u |
撤销上一步操作,可以多次使用,如输入两个u,表示撤销两步操作 |
[Ctrl]+r |
这个动作一般是和u撤退操作配合使用,用来取消上一步的撤退操作 |
~ |
字母的大小写切换快捷键,由shift+~组合而成,单个转化当前光标后面的一个字符的大小写 |
~ |
字母的大小写切换快捷键,由shift+~组合而成,单个转化当前光标后面的一个字符的大小写 |
3~ |
将光标位置开始的3个字母改变其大小写 |
g~~ |
改变当前行字母的大小写 |
U |
将可视模式下选择的字母全改成大写字母,普通模式下按v进入可视模式 |
u |
将可视模式下选择的字母全改成小写 |
. |
点号,重复前一个执行过的动作 |
x |
向后删除字符 |
X |
向前删除字符 |
d1G |
删除当前行至第一行 |
dG |
删除当前行至最后一行 |
d0 |
删除当前光标文本至行首 |
d$ |
删除当前光标文本至行尾 |
J |
将光标所在行与下一行的数据结合成同一行 |
10J |
将光标所在行与下10行的数据结合成同一行,注意J是大写 |
命令行模式
命令 |
说明 |
:wq |
退出并保存 |
:wq! |
退出并强制保存,“!”为强制的意思 |
:q! |
强制退出,不保存 |
ZZ |
这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!,习惯这个操作后,你会爱上他 |
:set nu |
显示行号 |
:set nonu |
取消行号 |
特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。
举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。