Vim中的buffer, window, tab

来源:互联网 发布:电脑中文编程语言视频 编辑:程序博客网 时间:2024/05/22 06:25

Preface

一直都搞不清楚Vim的buffer,window以及tab的含义,今天搜了一下,发现一篇文章讲了这个,于是沿着别人的思路自己边看边探索。

Buffer

在Vim中,可以把buffer看成一个打开的文件实例。比如我用vim打开了一个文件,这时候就相当于创建了一个buffer,该buffer属于刚才这个文件。 
但是,虽然打开了文件就创建了buffer,buffer不一定就可以被看到,buffer可以存在于background中。以我下面的操作为例

vim a    #打开了一个文件a,创建了一个buffer名为a:ls      #该命令可以查看buffer list         # 1 %a "a":e b     #在vim中使用:edit打开一个文件b,这时vim内容换成文件b的内容:ls      #再来看buffer list,发现现在有两个buffer,其中buffer a 还在         # 1 #h "a"         # 2 %a "b":b 1     #使用:buffer命令切换到buffer a,现在vim的内容又换成文件a了

让一个buffer 退到 后台是有条件的,要么

  • buffer没有被修改,或者修改已经被保存
  • vim设置了hidden,:set hidden

Window

window和buffer类似,但是它是一个buffer的视口(viewport),也就是说是可以被看见的,同时,一个buffer可以有任意数量的window,因为每个window只是作为buffer的一个viewport,那我们从不同的viewport去观察同一个buffer,并没什么不好理解的。 
打比方,buffer是个房子,而不同的window就是房子的不同窗户。

vim a       # vim打开文件a:split a    # 新建一个文件a的window:ls         # 查看buffer list,发现只有一个buffer a            # 1 %a "a":split b    # 现在以窗口的形式打开一个文件b,之前文件a的两个窗口还保留着,也就是我们可看到内容:ls         # 查看buffer list,因为打开了文件b,自然就产生了新的Buffer,而且和buffer a都处于active状态            # 1 #a "a"            # 2 %a "b"

如果,我们在b窗口,切换buffer会怎么样?

#在b窗口上操作:b 1        # 切换到buffer a

这时会发现,原来的窗口b的内容切换成文件a的内容,而且窗口的名称也变成a了(之前是b),当然,buffer b还会存在,只不过到后台去了(hidden状态)。

Tab

在Vim中,tab是几个window组合成的集合。有了前面的基础,就不难理解了。

总结

Vim和Nodepad++在tab模型上有显著的区别。个人觉得vim提供了更丰富结构,充分理解vim的buffer, window以及tab的关系是很有必要的。

1 0
原创粉丝点击