一、vi与vim的联系与区别
vim是在vi的基础上进行的改进,现在的Linux应该默认都有,可以使用命令进行测试,如
在终端键入vi,然后按两次tab键,如果显示只有vi和vim-tiny,则需要安装完全版的vim,如果只显示vi,则表示没有安装vim,需要全新安装
yum install -y vim
另外,在终端中输入vi有的是进入vim工作模式,软连接形式。
二、vim中的三种工作模式
1、命令模式
类型 |
命令:说明 |
光标定位 |
|
|
G : 跳至文件最后一行,光标停在行首 |
|
gg : 跳至 文件开头,光标停于行首 |
|
0 : 移动光标到当前的行首 |
|
$ : 移动光标到当前的行位 |
切换至输入模式 |
|
|
i : 进入输入模式,从光标所在位置前输入文本 |
|
I : 进入输入模式,将光标移到当前的行首,在其前输入文本 |
|
a : 进入输入模式,在光标位置后输入文本 |
|
A : 进入输入模式,将光标移到当前行的行尾,在此开始输入文本 |
|
o : 进入输入模式,在当前行下新开一行,在行首等待输入文本 |
|
O : 进入输入模式,在当前行上新开一行,在行首等待输入文本 |
字符检索 |
|
|
/str : 正向查找,从当前页开始向后搜索字符串str |
|
?str : 反向查找,从当前页开始向前搜索字符串str |
|
n : 这是一个英文按键,可以往相同的方向移动到下一个被搜索的位置 |
|
N : 这是一个英文按键,可以往相反的方向移动到下一个被搜索的位置 |
文本的复制、粘贴和删除 |
|
|
dd : 删除当前光标所在的行 |
|
dw : 删除光标后的一个单词 |
|
ndd: 删除短标·光标所在行开始的n行 |
|
yy: 复制光标所在行的文本信息到缓冲区 |
|
yw : 复制光标后 的一个单词 |
|
P: 将缓冲区的内容粘贴到当前光标所在行的下一行 |
|
nyy: 将当前开始行的n行内容复制到缓冲区 |
|
x : 删除当前光标所在位置的一个字符 |
|
nx: 删除从当前光标位置开始向右的n个字符 |
撤销和重复 |
|
|
u : 取消刚刚发生的误操作或不适合的操作对文件造成的影响,恢复文件到操作之前的状态 |
|
. : 重复执行一遍刚刚执行完的操作 |
保存和退出 |
|
|
ZZ : 存盘退出 |
|
ZQ : 不保存此操作,退出编辑 |
2、末行模式(命令行模式)
类型 |
命令:说明 |
字符串检索、替换 |
|
|
:/str/ w file :将包含str的行写到文件file中 |
|
:/str1/,/str2/ w file :将从str1开始到str2结束的内容都写到文件file中(如果是":/str/,/str/ w file”将会向文件中输入本行) |
|
:s/str1/str2/ :替换当前行第一个str1为str2(此处:与s之间没有空格) |
|
:s/str1/str2/g :将当前行中所有str1替换为str2(此处:与s之间没有空格) |
|
:%s/str1/str2/ :替换第一行开始到最后一行中每一行的第一个str1为str2 |
|
:%s/str1/str2/g :替换第一行开始到最后一行中每一行的str1为str2 |
|
:n,$s/str1/str2/ :替换从n行开始到最后一行中每一行的第一个str1为str2 |
|
:n,$s/str1/str2/g :替换从n行开始到最后一行中每一行的str1为str2 |
光标定位 |
|
|
:n :输入要移动的行号,光标即可到达 |
文件相关 |
|
|
:w :将当前标记的内容存盘,不退出vim |
|
:w file :将当前编辑的内容写到文件file中(相当于另存为) |
|
:n1,n2 w file :将从n1行开始到n2行结束的内容写到文件file中 |
|
:set number :可以简写成“set nu”,显示行号 |
文本的复制、粘贴和删除 |
|
|
:d :删除当前光标所在行 |
|
:nd :删除从当前光标所在行开始的n行 |
|
:n1,n2 co n3 :将从n1行开始到n2行结束的所有内容复制到n3行后面 |
|
:n1,n2,m n3:将从n1行开始到n2行结束的所有内容移动到n3行后面,询问是否执行 |
|
:n1,n2 m n3 :将从n1行开始到n2行结束的所有内容移动到n3行后面,不询问,直接执行 |
|
:n1,n2 d :删除从n1行开始到n2行结束的所有内容 |
|
:.,$d :删除从当前行开始到结尾的所有内容 |
|
:/str1/,str2/d :删除从字符串str1开始到字符串str2结束之间得所有内容 |
保存和退出 |
|
|
:wq :强制性的写入文件并退出。即使文件没有被修改,也强制写入,并更新文件的修改时间 |
|
:q! :不保存此次文件的修改并退出vim |
|
:q :退出vim。当内容有修改,但未保存是,会有提醒 |
|
:x :写入文件并退出。晋档·仅当文件被修改时才会写入,并更新修改时间,否则不会更新修改时间 |
3、输入模式(插入模式)
命令 |
说明 |
s |
删除当前字符,将光标停留在下一个字符处 |
S |
删除当前行,光标停留在行首 |