Brings you the IDE-like tabs into Vim, for easy navigation, and a nice, customizable look
Note: This plugin has been renamed from
vim-workspace and thus has also
different prefix for the configuration and commands. Please revisit the README
and use the new names of the configuration parameters, highlight groups and
commands. Sorry for inconvenience.
Vim-buffet takes your buffers and tabs, and shows them combined in the
tabline. With this you always have your list of buffers visible, at the same
time not losing visibility into tabs. Moreover,
vim-buffet provides handy
commands to boost navigation as well as a list of options to customize how the
But if you are an experienced Vim user, you might have got tired of
Take a look at the screenshot. The blue cuties are the tabpages. The tabpage
that has the buffers list coming next, is the current tabpage. The gray items
with names are the hidden/inactive buffers, and obviously, the green one is the
current buffer. The brighter items on both ends with the little arrows and numbers
are the truncation indicators. If all the buffers do not fit the screen,
vim-buffet truncates the tabline, and shows the number of truncated buffers on
Note: The instance of Vim in the screenshot is configured to use powerline symbols and dev-icons. The default interface is only text and will work without requiring any patched fonts. The default interface looks like in the screenshot below.
Use your favourite plugin manager to install
vim-buffet. If you do not have any
preference or have not decided yet, I would recommend Plug.
vim-buffet is enabled by default, so whenever you restart
Vim, you will see the new tabline!
Apart from listing the buffers in the tabline,
vim-buffet also provides some
handy commands to manipulate the buffers:
Bw[!]- wipe the current buffer without closing the window. If is has unsaved changes, an error will be shown, and the buffer will stay open. To ignore any changes and forcibly wipe the buffer, use
Bonly[!]- wipe all the buffers but the current one. If there are any buffers in the list that has unsaved changes, those will not be wiped. To ignore any changes and forcibly wipe all buffers except the current one, use
Mappings for switching buffers are also provided. You just need to add the following mappings to your Vimrc file:
nmap <leader>1 <Plug>BuffetSwitch(1) nmap <leader>2 <Plug>BuffetSwitch(2) nmap <leader>3 <Plug>BuffetSwitch(3) nmap <leader>4 <Plug>BuffetSwitch(4) nmap <leader>5 <Plug>BuffetSwitch(5) nmap <leader>6 <Plug>BuffetSwitch(6) nmap <leader>7 <Plug>BuffetSwitch(7) nmap <leader>8 <Plug>BuffetSwitch(8) nmap <leader>9 <Plug>BuffetSwitch(9) nmap <leader>0 <Plug>BuffetSwitch(10)
This will allow you to switch between buffers 1 - 10. You can get more
mappings, or disable it completely, by configuring the
There are some configuration options that make it possible to customize how the tabline works and looks like.
||The character to be used for separating items in the tabline|
||The maximum number of
||If set to
||The character to be used as an icon for the tab items in the tabline|
||The character to be shown as the name of a new buffer|
||The character to be shown by the name of a modified buffer|
||The character to be shown by the count of truncated buffers on the left|
||The character to be shown by the count of truncated buffers on the right|
||The types of buffers to hide from the tabline (Note: This has the side effect of making all matching buffers unlisted)|
Of course, you can customize the colors of your tabline, to make it awesome and
yours. To get your custom colors set, define a function with name
g:BuffetSetCustomColors and place your highlight group definitions inside
" Note: Make sure the function is defined before `vim-buffet` is loaded. function! g:BuffetSetCustomColors() hi! BuffetCurrentBuffer cterm=NONE ctermbg=5 ctermfg=8 guibg=#00FF00 guifg=#000000 endfunction
The following is the list of highlight groups, with self-explanatory names:
||The current buffer.|
||An active buffer (a non-current buffer visible in a non-current window)|
||A non-current and non-active buffer.|
||The current buffer when modified.|
||A modified active buffer (a non-current buffer visible in a non-current window).|
||A modified non-current and non-active buffer.|
||The truncation indicator (count of truncated buffers from the left or right)|
Here are some recommended mappings to boost your navigation experience:
noremap <Tab> :bn<CR> noremap <S-Tab> :bp<CR> noremap <Leader><Tab> :Bw<CR> noremap <Leader><S-Tab> :Bw!<CR> noremap <C-t> :tabnew split<CR>
First you will need a patched font, extended with
symbols. Also, you will need the
vim-devicons installed, which
also has great guides on how to patch fonts, as well as some pre-patched fonts.
As soon as you have the patched font, setting the following options, will give
you exactly the same tabline as you see in the first demo screenshot:
let g:buffet_powerline_separators = 1 let g:buffet_tab_icon = "\uf00a" let g:buffet_left_trunc_icon = "\uf0a8" let g:buffet_right_trunc_icon = "\uf0a9"
Note: you need to have
vim-devicons loaded before
vim-buffet in order to
make this work.
Just add this mapping to your Vimrc:
map <C-t> :tab split<CR>
The reason is that you probably use some statusline plugin (e.g. lightline, airline) that also has tabline support, which overrides vim-buffet. All you need to do is disable the tabline of the statusline plugin.
It should be something like this:
let g:lightline.enable.tabline = 0