Vim中的buffer, window, tab

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的关系是很有必要的。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值