Vim
程序员文章站
2024-02-21 11:37:22
...
Vim使用
所有的命令都需要在Normal模式下使用
Level 0
1.从Normal和Insert模式切换
i->进入Insert模式
ESC->返回Normal模式
2.移动光标
hjkl->左下上右移动光标
方向键->与hjkl作用相同
3.删除
x->删除当前光标所在位置
dd->删除当前行,并将删除的行存到剪贴板
4.拷贝和粘贴
yy->拷贝当前行
p->粘贴,p表示在当前位置之后,P则是在当前位置之前
5.打开/保存/退出/改变文件
:e <path/to/file>->打开一个文件
:w->存盘
:saveas <path/to/file>->
:x/wq或ZZ->存盘并退出,ZZ不需要输入冒号
:q!->退出不保存
:qa!->强行退出所有的正在编辑的文件
:bn/bp/n->同时打开多个文件时,使用bn、bp这个两个命令进行切换,n是到下一个文件
6.帮助
:help <commmand>->显示相关命令的帮助
:q->退出帮助
Level 1
1.各种插入模式
a->在光标后插入
o->在当前行后插入新行
O->在当前行前插入新行
cw->替换从光标所在位置后到一个单词结尾的字符
2.移动光标
0->到行头
$->到行尾
^->到本行第一个不是blank字符的位置
g_->到本行最后一个不是blank字符的位置
/pattern->搜索与pattern匹配的字符串,若有多个匹配,按n到下一个
3.撤销和重做
u->撤销还原
ctrl+r->重做
Level 2
1.重复
.->可以重复上一次的命令
N<command>->重复某个命令N次
2.高效率移动光标
NG/:N->移动到第N行
gg->移动到第一行,等同于1G,或:1
G->移动到最后一行
w/e->按照单词移动,w到下一个单词的开头,e到下一个单词的结尾,W/E用于按照字符分隔符移动
%->匹配括号移动,需要先把光标移动到括号上,包括(,{,[
*/#->匹配光标当前所在单词,*是移动到下一个,#是移动到上一个
3.与移动光标配合联动的命令
<start position><command><end position>
例如
0y$->先到行头,开始拷贝,到本行最后一个字符
y2/foo->拷贝2个“foo”之间的字符串
v->可视化的选择
gU->变大写
gu->变小写
Level 3
1.在当前行上移动光标
0,^,$,g_
fa->到下一个为a的字符处
3fa->在当前行查找第三个出现的a
t,->到逗号前的第一个字符
F/T->f、t作用相同,方向相反
dt"->删除所有内容,直到遇到双引号
2.块操作
ctrl+v->进入可视化块操作
例如
^<ctrl+v><ctrl+d>I--<ESC>->在多行前插入--,<ctrl+d>向下移动也可使用其他方式移动光标,--可替换为//即注释多行
3.自动提示
ctrl+p/n->自动补齐功能
4.宏录制
qa->把操作记录在寄存器a中
q->停止录制
@a->施放一次寄存器a中录制的宏
@@->施放最新录制的宏
例如
在一个只有一行且只有“1”的文本中,键入qaYp<ctrl+a>q,Yp复制粘贴行
<ctrl+a>->增加1
此时文本会出现两行分别是“1”和“2”,结束宏录制
@a->在2下面写3
@@->在3下面写4
100@@->重复执行100次后,数据增加到104
5.可视化选择
v,V,ctrl+v进入可视化选择,之后可以配合其他命令
J->把所选的行并为一行
<,>,=->左右缩进,=则是自动给缩进
$A,输入字符串,[ESC]->在所有被选择的行后添加
6.分屏
分屏启动Vim
vim -On file1 file2->垂直分屏//n表示分成几个屏
vim -on file1 file2->水平分屏//n表示分成几个屏
ctrl+w c/q->关闭当前窗口,若只剩下一个则退出Vim
ctrl+w s/v->上下/左右分隔当前打开的文件
:sp/vsp filename->上下/左右分隔,并且打开一个新的文件
ctrl+w l/k/j/h->移动光标,若为大写L/K/J/H,则会移动分屏
ctrl+w w->把光标移动到下一个屏中
ctrl+w -/+/=->改变屏的尺寸