赞
踩
转载*请注明原始出处:http://blog.csdn.net/a464057216/article/details/51523860
后续此博客不再更新,欢迎大家搜索关注微信公众号“测开之美”,测试开发工程师技术修炼小站,持续学习持续进步。
许多优秀的图形界面编辑器比如UltraEdit、Notepad++等都有tab(中文叫标签),打开一个文件编辑的时候,相当于把这个文件放到了一个tab中,并且这些编辑器是每文件每tab的,即不允许一个文件在两个tab中打开。这个概念有点像浏览器,我们可以在一个浏览器窗口中打开多个tab,不过浏览器中不同的tab可以访问同一个网页。vim中tab的概念,却完全不同于图形界面编辑器及浏览器的传统意义。
1.buffer
vim中buffer的概念对应UE等编辑器中tab的概念,我们使用vim a.py打开一个文件后,使用:ls命令可以看到当前所有的buffer,比如:
:ls
1 %a "a.py" line 1
使用:badd b.py可以打开b.py的buffer(badd代表buffer add,也可以简写成bad),只不过这个时候b.py的buffer是hidden的,使用:ls可以看到如下输出:
:ls
1 %a "a.py" line 1
2 "b.py" line 1
输出中,左侧是buffer的编号,有%的表示是当前激活的window中打开的buffer,a表示这个buffer是active的,双引号中的字符串表示了buffer对应的文件名字,line n表示当前cursor处于该buffer的哪一行。
我们使用:b2命令将b.py的buffer加载到当前窗口,然后使用:ls命令查看如下:
:ls
1 # "a.py" line 1
2 %a "b.py" line 1
说明我们目前确实是在b.y的buffer中。我们可以使用:bd1删除a.py的buffer(bd代表buffer delete,当然删除前需要保存buffer 1的更改),然后使用:ls命令查看如下:
:ls
2 %a "b.py" line 1
熟悉了buffer的创建、切换、删除、查看buffer列表之后,有人可能会问,我能够方便的使用:sp及:vsp分割窗口,为什么要用buffer呢?不要忘了,能使用:sp及:vsp分割窗口在大型项目中工作的人,显示器一定很大,buffer在显示器较小的时候就很有优势了,它能够实现在文件间的快速切换。
2.window
刚才提到的:sp(水平分割)及:vsp(垂直分割)命令就是分隔window(窗口)的命令,vim又一个优势在于,可以在不同的window中编辑同一个文件的buffer,并且在一个window中对文件进行编辑,修改会同步体现在另外的window中,比如下图(在两个window打开了chapter1.py的buffer):
上面的例子,一共打开了两个文件的buffer,比如:
:ls
1 %a "chapter1.py" line 1
2 #a "../chapter2/chapter2.py" line 0
在左上角的window中:b2则可以加载chapter2.py的buffer,比如:
在window之间切换可以使用Ctrl + w + h/j/k/l(向左、下、上、右切换)或者Ctrl + w + w(在窗口间切换)。
如果要调整window的大小,分窗口是水平分隔还是垂直分隔两种情况:
如果是水平分隔可以使用:nwinc +/-把当前激活窗口高度增加、减少n个字符高度,比如:10winc +
如果是垂直分隔可以使用:nwinc >/<把当前激活窗口宽度增加、减少n个字符宽度,比如:5winc >
3.tab
会使用window分隔多窗口之后,我们终于要说一下一开始要讨论的vim的tab的功能。试想在一个工程项目中,我们要开发客户端和服务端的代码,我们可以把屏幕划分成上面是客户端的代码,下面是服务端的代码,但是你的屏幕总是有限的,如果能像mac一样通过三指滑动实现窗口切换就好了。
当然可以,在vim中这就是tab的切换,你可以把服务端放在一个tab中,客户端放在一个tab中,比如vim client1.py后,使用:tabe server1.py在另一个tab中编辑服务端的代码(tabe代表tab edit)。当然,每个tab中可以分隔出window,我做了一个如下的例子:
tab的标题栏会显示该tab当前激活的window中文件的名字,及tab中一共有多少个window。使用gt命令可以切换到下一个tab,使用gT命令可以切换到前一个tab,比如:
如果tab比较多,我们可以使用:tabs查看所有tab的列表,然后输入ngt命令切换到对应的tab,其中n是tab的编号,比如:
:tabs
Tab page 1
client3.py
client2.py
client1.py
Tab page 2
> samp.py
Tab page 3
server3.py
server2.py
server1.py
'>'表示cursor当前在tab 2的samp.py上,使用1gt即可快速切换到tab 1。
如果当前tab分隔的window比较多,可以使用:tabc命令关闭当前tab(tabc代表tab close)。
如果觉得我的文章对您有帮助,欢迎关注我(CSDN:Mars Loo的博客)或者为这篇文章点赞,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。