When working on real projects using Neovim, we often open several files in a window. Each file corresponds to a buffer. How to switch between these buffers quickly?

To show a list of opened buffers, we can use the :buffers command. Below is an example output:

3      "train.py"                     line 1
4 %a   "main.py"                      line 17
6      "keys.py"                      line 1
7      "utils.py"                     line 1
8 #    "val_CTC.py"                   line 2

The first number is a unique buffer number corresponding to each buffer.

The native way

In command mode, some of the commands to change buffers are list below:

  • :bfirst: change to first buffer in the buffer list
  • :blast: change to last buffer in the buffer list
  • :bnext: change to next buffer
  • :bprevious: change to previous buffer

Or you can use :b <TAB> to choose from currently opened buffers.

If there are a few buffers, it is easy to switch using the above command. However, if we have a dozen of opened buffers, it is cumbersome to use these commands.

Switching buffers using buffer number

We can switch to a buffer quickly if we know its number. If we know the number of a buffer, we can use NUM Ctrl-6 to go to a particular buffer (replace NUM with actual buffer number). For example, to switch to main.py, we will press 4<C-6>.

This is still inconvenient — since we have to find the buffer number first.

A better solution for buffer switching

If you have installed vim-airline ,you can configure it to show the buffer number on the top of the window tabline. Just add the following settings to Nvim config file init.vim:

let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_nr_show = 1

Restart Nvim and you will find that each buffer has a number on the left of the file name. Then you can easily go to a buffer.

If you do not want to use vim-airline, there are other plugins to show a buffer tabline, such as buf-tabline, which is more lightweight.