vim的三种模式
Vi有三种模式:命令模式,文本输入模式,末行模式
命令模式下的操作
ZZ 保存退出
gg=G 代码格式化
光标移动
h 光标左移
j 光标下移
k 光标上移
l 光标右移
w 移动一个单词
gg 光标移动到文件开头
G 光标移动到末尾
0 光标移动到行首
$ 光标移动到行尾
nG 行跳转
删除命令
x :删除光标后一个字符,相当于Del
X :删除光标前一个字符,相当于Backspace
dw:删除光标开始位置的字符,包含光标所在字符
d0:删除光标前本行所有内容,不包含光标所在字符
D[d$]:删除光标后本行所有内容,包含光标所在字符
dd:删除光标所在行(本质其实是剪切)
ndd:从光标当前向下删除指定的行数,如15dd
v/ctrl + v:使用h,j,k,l 移动选择内容,然后按 d 删除其中 ctrl + v 是列模式,v为非列模式
撤销和反撤销命令
u:一步一步撤销
ctrl + r:反撤销
复制粘贴
yy:复制当前行
nyy:复制n行
p:在光标所在位置向下新开辟一行,粘贴
剪切:按dd或ndd删除,将删除的行保存到剪切板中,然后按p/P就可以粘贴
P:在光标所在位置向上新开辟一行,粘贴
可视模式
v/ctrl+v:使用h,j,k,l移动选择内容;
使用d删除
使用y复制
使用p粘贴到光标的后面
使用P粘贴到光标的前面
查找命令
/:/.....,从光标所在位置开始搜索,按n向下搜索,按N向上搜索
?:?....,从光标所在位置开始搜索,按n向上搜索,按N向下搜索
#:将光标移动到待搜索的字符串上,然后按n向上搜索,按N向下搜索
shift + k:在待搜索的字符串上按 shift + k 或者 K,可以查看相关的帮助文档
替换
r:替换当前字符
R:替换当前光标后的字符
切换到文本输入模式
i:在光标前插入
a:在光标后插入
I:在光标所在行的行首插入
A:在光标所在行的行尾插入
o:在光标所在行的下面新创建一行,行首插入
O:在光标所在行的上面新创建一行,行首插入
s:删除光标后边的字符,从光标当前位置插入
S:删除光标所在当前行,从行首插入
按列模式插入:先按ctrl + v进入列模式,按hjkl移动选定某列,按 I 或者 shift + i 向前插入,然后插入字符,最后按两次 ESC
末行模式下的操作
从命令模式切换到末行模式,输入冒号:
保存退出
q 退出
q! 强制退出,不保存修改内容
w 保存修改内容,不退出
wq 保存并退出
x 相当于wq
替换
:s/old/new/ 光标所在行的第一个old 替换为 new
:s/old/new/g 光标所在行的所有 old 替换为 new
:m,n s/old/new/g 将第m行至第n行之间的old全部替换为new
:%s/old/new/g 当前文件所有old替换为new
:1,$s/old/new/g 当前文件的所有old替换为new
:%s/old/new/gc 当前文件所有old替换为new,须要用户确认
快速翻屏
ctrl + u : 向下翻半屏 --- 光标向上移动
ctrl + d : 向上翻半屏 --- 光标向下移动
ctrl + f : 向上翻一屏
ctrl + b : 向后翻一屏
在末行模式下执行shell命令
!shell命令
按两下esc可以回到命令模式
分屏操作
打开文件之后分屏
sp:当前文件水平分屏
vsp:当前文件垂直分屏
sp 文件名:当前文件和另一个文件水平分屏
vsp 文件名:当前文件和另一个文件垂直分屏
ctrl-w-w:在多个窗口切换光标
wall/wqall/xall/qall/qall! 保存/保存退出/保存退出/退出/强制退出分屏窗口
vi -o 文件名 文件名 两个不同文件水平分屏
vi -O 文件名 文件名 两个不同文件垂直分屏