vim常用三种模式
命令模式(Command mode)
插入模式(Insert mode)
末行模式(Last line mode)
(一)进入命令模式
vi
或者
vim
(二)命令模式 -> 插入模式
(1)在光标之前插入内容(insert)
i
(2)在光标之后插入内容(append)
a
(3)在广标的下一行开头插入内容
o
(三)插入模式 -> 命令模式
esc
(四)命令模式 -> 末行模式
:
(五)末行模式 -> 命令模式
执行命令结束
(六)退出末行模式
(1)不保存退出
:q!
(2)保存退出
:wq!
一、命令模式(Command mode)
(一)移动光标
(1)移动到首行
gg
(2)移动到尾行
G
(二)复制和粘贴
(1)复制一行
yy
p
(2)复制3行
3
yy
p
(三)剪切和粘贴
(1)剪切一行
dd
p
(2)剪切3行
3
dd
p
(四)删除
(1)删除一行
dd
(2)删除3行
3
dd
(3)删除光标所在的一个单词
db
(4)删除光标所在的一个字符
x
(5)删除光标前面的一个字符
X
(五)撤销和恢复
(1)撤销前面一个操作
u
(2)恢复撤销的操作
ctrl + R
二、插入模式(Insert mode)
正常编辑内容。
三、末行模式(Last line mode)
(一)行号
(1)显示行号
:set nubmer
或者
:set nu
(2)取消行号
:set nonumber
或者
:set nonu
(二)跳转
(1)跳转到第10行
:10
(2)跳转到首行
:0
(三)查找
(1)查找文本中的字符串hello
/hello
(2)上一个
N
(3)下一个
n
(四)替换
(1)替换当前行第一个str1为str2
:s/str1/str2/
(2)替换当前行所有str1为str2
:s/str1/str2/g
(3)替换每一行中第一个str1为str2
:%s/str1/str2/
(4)替换每一行中所有str1为str2
:%s/str1/str2/g
(5)替换当前行开始到最后一行中每一行的第一个str1为str2
:.,$s/str1/str2/
(6)替换当前行开始到最后一行中每一行所有str1为str2
:.,$s/str1/str2/g
(7)替换第n行开始到最后一行中每一行的第一个str1为str2
:n,$s/str1/str2/
(8)替换第n行开始到最后一行中每一行所有str1为str2
:n,$s/str1/str2/g
(五)添加
(通过替换命令实现)
(1)将每行行首添加hello
:%s/^/hello/
(2)将每行行尾添加hello
:%s/$/hello/
(3)将第3行到第5行的行首添加hello
:3,5s/^/hello/
(4)将第3行到第5行的行尾添加hello
:3,5s/$/hello/
(六)删除
(1)删除第10行到第20行
:10,20d
(2)删除所有行
:1,$d
或者
:%d
(3)删除首行到当前行
:1,.d
(4)删除当前行到末行
:.,$d
(5)删除首行
:1d
(6)删除末行
:$d
(7)删除包含hello的行
:g/hello/d
(8)删除不包含hello的行
:%g!/hello/d
或者
:v/hello/d
(9)删除以hello开头的行
:g/^hello/d
(10)删除以hello结尾的行
:g/hello$/d
(11)删除所有空行
:g/^$/d