Linux中vi与vim的使用

一、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 删除当前行,光标停留在行首

猜你喜欢

转载自blog.csdn.net/G_liunian/article/details/109241792