缓存区
查看缓存区
:ls
查看当前被载入内存的缓存区
:bnext
切换到下一个缓存区
%
代表哪个缓存区在当前窗口可见
#
代表轮换缓冲区
<C-^>
在当前缓冲区和轮换缓冲区中切换
切换缓存区
:bprev
== :bprevious
切换到上一个缓存区
:bnext
== :bNext
切换到上一个缓存区
:bfirst
切换到第一个缓存区
:blast
切换到最后一个缓存区
使用:ls
查看缓存区列表的时候,每一项前面有一个数字,这是vim在创建缓存区的时候给分配的,我们可以使用:buffer N
来使某一个缓存区在当前页面显示出来。或者用更加直观的::buffer {bufname}
其中的{bufname}只要是缓存区名字中能唯一标识
删除缓存区
先说明,删除缓存区并不会对文件产生任何影响,只是将内存中的那份副本给删除了。删除缓存去使用的命令是:bdelete
,可以简写成:bd
,其有两种用法::[range]bd
/:bd N1 N2 N3 ...
第一种用法是删除[range]所包含的缓存区,比如:3,6bd
表示删除标号为3、4、5、6的缓存区。第二种用法是删除单个的缓存区。没有什么好说的。一般情况下我们是不需要去删除缓存区的,所以这几个命令用得也不多噢~
使用参数列表将缓存区分组
:args
可以查看vim中的参数列表,输出中[]
将标识处当前那个文件为活动文件,使用:argdo
可以在每一个缓存区上运行一条EX命令.参数列表是vi遗留下来的功能,但是在vim中这个功能也有所增强,虽然与缓存区列表相比,参数列表显得有点寒酸,但请给他一个机会,它是缓存区列表一个强有力的补充
使用args {argList}
可以修改vim的参数列表,其中{argList}可以是文件名、文件通配符、某个命令的输出(使用反引号);比如:args index.html app.js
,这个命令会将后面所带的两个文件也加入到缓存区中,如果是大量文件,可以使用文件通配符。说到文件通配符,我们就能引出下一个话题了
Glob模式指定文件
和在shell中一样,*
代表匹配0个或多个字符,并且它不能递归目录,与shell中不太一样的是:**
可以匹配0个到任意个字符,并且他能递归进目录中,在上一个技巧中,我们正好可以使用这两个通配符来将大量文件加入缓存区中了。
窗口分割
创建分割窗口
<C-w>s
水平分割窗口,<C-w>v
垂直分割窗口,大屏幕必备神器。
以上两个key map 分别对应两个命令::sp[lit]{file}
和:vsp[lit]{file}
.
窗口间切换
<C-w>w
在窗口间循环切换
<C-w>h/j/k/l
切换打左/下/上/右边的窗口
实际上<C-w><C-w/h/j/k/l>
效果与后一个字符不使用<C>
是一样的
关闭窗口
最简单的是:q
是关闭当前的窗口。
还有:clo[se]
也是关闭当前窗口。
而:on[ly]
是只保留当前窗口,关闭其他窗口。
调节窗口大小
<C-w>=
使得所有窗口等宽等高
<C-w>_
最大化当前窗口的高度
<C-w>|
最大化当前窗口的宽度
[N]<C-w>_
把活动窗口的高度设置为[N]行
[N]<C-w>|
把活动窗口的宽度设置为[N]列
[N]<C-w>>
把活动窗口的大小调大[N]
[N]<C-w><
把活动窗口的大小调小[N]
vim也支持窗口重新排列,请查阅:h window-moving
使用标签页
切换窗口的工作目录
lcd {path}
可以设置当前窗口的本地工作目录
lcd
只是作用在了当前窗口,而没有改变整个标签,如果一个标签包含了两个或者更多的窗口,我们可以使用windo lcd {path}
来作用到所有这些窗口上
创建标签
tabedit {filename}
打开一个新标签,并在这个标签中打开{filename},如果没有加这个参数,那么会打开一个新标签,里面包含一个空缓存区。
如果当前标签页中不止一个窗口,那么可以使用<C-w>T
来将当前活动窗口移动到新的标签中。
关闭标签
如果标签中只有一个窗口,那么使用:q
/:close
/tabclose
都可以关闭一个标签
同样我们也可以使用:tabonly
只保留当前活动的标签。
标签间的切换
标签的开始标号是1,我们可以使用[N]gt
在标签间跳转,如果省略掉[N]那么将会跳转到下一个标签,gT
作用一样,不过是反向跳转
其对应的命令分别是:
:tabn[ext] {N}
-> {N} gt
:tabn[ext]
-> gt
:tabp[revious]
-> gT
重新排列标签
:tabmove [N]
可以重新排列标签页,当[N]为0时,标签被移动到开头,如果省略[N],标签将被移动到最后