Vim扫盲: buffer,window,tab

来源:互联网 发布:决战武林神兵5升6数据 编辑:程序博客网 时间:2024/05/16 11:18

Vim 中的 windowtab 非常具有迷惑性,跟我们平时所说的 “窗口” 和 “标签页” ,是完全不同的两个概念,请看 vimdoc 给出的定义:

A buffer is the in-memory text of a file.A window is a viewport on a buffer.A tab page is a collection of windows.

简单来说就是:

  • buffer 可以看做是内存中的文本文件,在没写到磁盘上时,所有的修改都发生在内存中;
  • window 用来显示 buffer,同一个 buffer 可以被多个 window 显示(一个 window 只能显示一个 buffer);
  • tab page 包含了一系列的 window,其实叫 layout 更合适,看 这里

来看 Vim 官网上的一幅图:

Tabs-windows-buffers.png

如何选择

目前在 Vim 中比较成熟的方案是使用 buffer 来模拟我们平时所说的 “标签页”,这样在终端中使用 Vim 的时候,也可以获得一致的体验。有很多的插件可以供选择:

  • vim-tabbar-mod
  • vim-bufferline
  • minibufexpl.vim
  • vim-airline (配合 vim-bufferline 一起使用)

我比较推荐 vim-bufferline + vim-airline 的组合,下面给一张截图供参考:

vim-airline-bufferline.png

可以在 ~/.vimrc 中添加如下配置,来使用 \ + [1-9] 在 “tab” 中切换:

let g:airline#extensions#tabline#buffer_idx_mode = 1nmap <leader>1 <Plug>AirlineSelectTab1nmap <leader>2 <Plug>AirlineSelectTab2nmap <leader>3 <Plug>AirlineSelectTab3nmap <leader>4 <Plug>AirlineSelectTab4nmap <leader>5 <Plug>AirlineSelectTab5nmap <leader>6 <Plug>AirlineSelectTab6nmap <leader>7 <Plug>AirlineSelectTab7nmap <leader>8 <Plug>AirlineSelectTab8nmap <leader>9 <Plug>AirlineSelectTab9

参考链接

  • Vim Tab Madness. Buffers vs Tabs
  • stackoverflow上关于Vim tab和buffer的回答
  • Buffers, windows, and tabs

前往独立博客阅读

0 0
原创粉丝点击