VIM==Vi IMprove最初是一个大神完全把VI复制到他自己的计算机,但后来慢慢地变成了不断增加新功能,便于编程人员coding的过程,VIM设计的基础是你在使用时完全基于键盘,他希望你整个编辑都在使用键盘而不是鼠标,所以键盘的每个按键都有固定的用法,同时这也注定VIM有很多的命令需要去记忆。
进入vi/vim
1.vim filename #打开或者新建文件,并且光标会定位在第一行首
2.vim +n filename #打开文件,光标定位在第n行首
3.vim + filename #打开文件,光标定位在最后一行首
4.vim +/pattern filename #打开文件并将光标置于第一个与pattern匹配的行首
5.vim -r filename #以恢复的模式打开文件
同时打开多个文件
1.vim file1 file2 ... #水平打开多窗口,
2.vim -o file1 file2 ... #水平打开多窗口,
3.vim -O file1 file2 ... #垂直打开多窗口,
4.vim -d file1 file2 ... #垂直打开多窗口,并且进行比较
5.vimdiff file1 file2 .. #等同于上一句
进入vim命令行下是打开新的文件
:new 文件名 #打开或新建已有的一个文件,此时是纵向的
:split 文件名, #也可以简写为:sp+文件名,此时也是纵向的
:vsplit 文件名, #也可以简写为:vsp+文件名,此时是横向的
切换多个窗口的方式
1.ctrl+ww #在不同的文件间相互转换
2.:n next #下一个文件(用于vim file1 file2 ... )
3.:N #前一个(用于vim file1 file2 ... )
4.close或q! #最后一个不能使用close
5.:n file2 #跳到file2文件(用于vim file1 file2 ... )
多标签操作
1.:tabnew #新建标签页
2.:tabs #显示已打开标签页的列表
3.:tabc #关闭当前标签页 ,最后一个不能使用
4.:tabn #移动到下一个标签页
5.:tabp #移动到上一个标签页
6.:tabfirst #移动到第一个标签页
7.:tablast #移动到最后一个标签页
关闭窗口
q或 close #关闭当前窗口
only #保留当前窗口,关闭其它所有窗口
qall(qa) #退出所有窗口
wall #保存所有窗口
exit #保存所有窗口
屏幕翻滚类命令
Ctrl+u #向文件首翻半屏
Ctrl+d #向文件尾翻半屏
Ctrl+f #向文件尾翻一屏
Ctrl+b #向文件首翻一屏
插入命令
i #在光标前 我感觉这一个足矣
删除命令
Ctrl+u #删除输入方式下所输入的文本 实习的时候写脚本不经意发现的
搜索及替换命令
/pattern #从光标开始处向文件尾搜索pattern
?pattern #从光标开始处向文件首搜索pattern
n #在同一方向重复上一次搜索命令
N #在反方向上重复上一次搜索命令
:s/p1/p2/g #将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g #将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g #将文件中所有p1均用p2替换 以上三条类似于sed的替换
最后行方式命令
:n1,n2 co n3 #将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3 #将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d #将n1行到n2行之间的内容删除
:w #保存当前文件
:e filename #打开文件filename进行编辑
:x #保存当前文件并退出
:q #退出vi
:q! #不保存文件并退出vi
:!command #执行shell命令command 经典例子:在非root权限下修改了一个文件,想要保存,可以使用 w! sudo !!
:n1,n2 w!cmd #将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command #将命令command的输出结果放到当前行
标签和窗口都添加的效果图