Skip to content
A lightweight plugin to display the list of buffers in the lightline vim plugin
Vim script
Branch: master
Clone or download
Latest commit 8743156 Aug 28, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
autoload/lightline Add support for right aligned bufferline Aug 28, 2019
LICENSE Initial commit Oct 5, 2016 Update screenshot Aug 28, 2019
bufferline.png Update screenshot Aug 28, 2019


This plugin provides bufferline functionality for the lightline vim plugin.

Table Of Contents


Installation can be easily done with a plugin manager of your choice. For example vim-plug:

Plug 'mengelbrecht/lightline-bufferline'


  1. Add 'buffers' to g:lightline.tabline.
  2. Add 'buffers': 'lightline#bufferline#buffers' to g:lightline.component_expand.
  3. Add 'buffers': 'tabsel' to g:lightline.component_type.

The result looks for example like this:

let g:lightline.tabline          = {'left': [['buffers']], 'right': [['close']]}
let g:lightline.component_expand = {'buffers': 'lightline#bufferline#buffers'}
let g:lightline.component_type   = {'buffers': 'tabsel'}

If you're adding the buffers to the bottom statusbar, the modified indicator will not be updated immediately. To work around this, add this autocmd to your vim config:

autocmd BufWritePost,TextChanged,TextChangedI * call lightline#update()



The filename-modifier applied to each buffer name. Default is ':.'. To see the available options use the command :help filename-modifiers in vim.


The indicator to use for a modified buffer. Default is ' +'.


The indicator to use when there are buffers that are not shown on the bufferline because they didn't fit the available space. Default is ....


The indicator to use for a read-only buffer. Default is ' -'.


Defines whether to shorten the path using the pathshorten function. Default is 1.


Defines whether to add the buffer number to the buffer name. Default is 0. Valid values are:

  • 0: No numbers
  • 1: Buffer number as shown by the :ls command
  • 2: Ordinal number (buffers are numbered from 1 to n sequentially)
  • 3: Both buffer number and ordinal number next to each other

For ordinal number in option 2 and 3 the number map g:lightline#bufferline#number_map is used as described below.


Dictionary mapping ordinal numbers (0-9) to their alternate character representations. Default is {}.

For example, to use unicode superscript numerals:

let g:lightline#bufferline#number_map = {
\ 0: '', 1: '¹', 2: '²', 3: '³', 4: '',
\ 5: '', 6: '', 7: '', 8: '', 9: ''}

... or unicode subscript numerals:

let g:lightline#bufferline#number_map = {
\ 0: '', 1: '', 2: '', 3: '', 4: '',
\ 5: '', 6: '', 7: '', 8: '', 9: ''}

Note: The option only applies when g:lightline#bufferline#show_number is set to 2 or 3.


Defines the string which is used to separate the buffer number (if enabled) and the buffer name. Default is ' '.


The name to use for unnamed buffers. Default is '*'.


Enables the usage of vim-devicons to display a filetype icon for the buffer. Default is 0.


Use unicode symbols for modified and read-only buffers as well as the more buffers indicator. Default is 0.

If set to 1 the symbols +, - and ... are replaced by , and .

Note: The symbols are only correctly displayed if your font supports these characters.


The minimum number of buffers needed to automatically show the tabline. When the buffer count falls below this number, the tabline will be hidden once again. Default is 0 (no auto-show behavior).


If enabled the buffers will be displayed in a reversed order. Default is 0 (buffers are not reversed).


If the bufferline is used in the right component of the tabline this should be set to 1 to ensure the correct order of the buffers. Default is 0.


This plugin provides Plug mappings to switch to buffers using their ordinal number in the bufferline. To display the ordinal numbers in the bufferline use the setting g:lightline#bufferline#show_number = 2.

To use the Plug mappings you can use e.g. these mappings:

nmap <Leader>1 <Plug>lightline#bufferline#go(1)
nmap <Leader>2 <Plug>lightline#bufferline#go(2)
nmap <Leader>3 <Plug>lightline#bufferline#go(3)
nmap <Leader>4 <Plug>lightline#bufferline#go(4)
nmap <Leader>5 <Plug>lightline#bufferline#go(5)
nmap <Leader>6 <Plug>lightline#bufferline#go(6)
nmap <Leader>7 <Plug>lightline#bufferline#go(7)
nmap <Leader>8 <Plug>lightline#bufferline#go(8)
nmap <Leader>9 <Plug>lightline#bufferline#go(9)
nmap <Leader>0 <Plug>lightline#bufferline#go(10)


The following minimal example adds the bufferline to the lightline tabline and demonstrates a few custom bufferline options:

let g:lightline#bufferline#show_number  = 1
let g:lightline#bufferline#shorten_path = 0
let g:lightline#bufferline#unnamed      = '[No Name]'

let g:lightline                  = {}
let g:lightline.tabline          = {'left': [['buffers']], 'right': [['close']]}
let g:lightline.component_expand = {'buffers': 'lightline#bufferline#buffers'}
let g:lightline.component_type   = {'buffers': 'tabsel'}


Q: I can't see the tabline!
A: Add set showtabline=2 to your configuration. This forces the tabline to always show.

Q: My vim GUI (MacVim, gVim, etc.) displays a graphical tabline and not the lightline tabline!
A: Add set guioptions-=e to your configuration (and guard it with if has('gui_running') ... endif). This will disable the GUI tabline and enable the lightline tabline.

Q: How can I hide the path and show only the filename?
A: Add let g:lightline#bufferline#filename_modifier = ':t' to your configuration.


Released under the MIT License

You can’t perform that action at this time.