In gnome-terminal, I can just press Alt + (1, 2, 3, etc.) to switch to specific tabs. I can also use Ctrl + (PgUp / PgDn) to cycle through tabs (admittedly less convenient, but it can be remapped).

If I want to use vim tabs instead of gnome-terminal tabs, typing :tabn and :tabp is quite cumbersome. I could map them to keyboard shortcuts, but that is still a lot less convenient than jumping directly to tab 4 with Alt + 4.

Is there a faster way to switch between tabs in vim?

8 Answers 8


Next tab: gt

Prior tab: gT

Numbered tab: nnngt

  • 2
    I know that I could type nnn g t, but I want to do it quickly, i.e. Alt + nnn or Ctrl + nnn. But Alt + n is already taken by gnome-terminal, and binding to Ctrl + n doesn't seem to have any effect.
    – Matthew
    Apr 11, 2012 at 2:46
  • 12
    What about mapping function keys to nnn g t? E.g., :map <F2> 2gt. There is the problem that <F1> is often mapped by GNOME to its help facility. Or you could choose some key you don't use often in normal mode, say the comma, and map it like this: :map , gt. Then 1, will take you to tab 1, 2, to tab 2, and so on.
    – garyjohn
    Apr 11, 2012 at 5:00
  • 4
    I found it very convenient to use '<' and '>' Feb 22, 2016 at 16:14
  • 2
    Last tab: :tabl command (full form: :tablast).
    – Ruslan
    May 25, 2020 at 17:06

Why not make use of your leader (my leader is mapped to Space):

" Go to tab by number
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<cr>

You can use the settings below to toggle between the current and last active tab (here it is mapped to Ctrl+L, i.e., <c-l>):

" Go to last active tab

au TabLeave * let g:lasttab = tabpagenr()
nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>
vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>

This is the easiest way that I found, to switch between tabs faster and simple.
Add next lines to your .vimrc and enjoy it, more tricks about vim tabs here.

nnoremap <C-Left> :tabprevious<CR>
nnoremap <C-Right> :tabnext<CR>

Now you can use Ctrl to go left and Ctrl to go right.

Or just use:
1gt to go to tab one,
2gt to go to tab two,
3gt to go to tab three, etc... now you have the idea.

  • I think this is the best answer here. Very convenient to have. I just disabled those system keybindings in OS X for making them system independent. May 14, 2016 at 5:47
  • 3
    Use arrow keys will slow you down. I have them disabled Jul 19, 2016 at 5:03
  • Yup... Best answer! Sep 9, 2016 at 18:08
  • Sadly "Ctrl" gave me problems in vmplayer, so I changed to keys "Backspace" and "Enter". Jul 13, 2017 at 11:30
  • Mac users: you may need to disable the default Mission Control spaces keyboard shortcuts: stackoverflow.com/questions/15719135/…
    – 4Z4T4R
    Aug 29, 2017 at 22:52

As I am on a Mac and not using MacVim (but plain vim within a terminal) I have had some difficulty with key combinations not being sent through to the terminal.

The most-compatible (and for me most comfortable) way to switch tabs quickly comes from the Vim Wikia site.

Place in your .vimrc file:

nnoremap H gT
nnoremap L gt

Now Shift-h (capital H) and Shift-l (capital L) will switch you quickly between tabs, and follows the convention that h and l correspond to left and right in vim on a regular qwerty keyboard.

  • 1
    I love this solution, intuitive and vim-like. No arrow keys needed. Apr 11, 2019 at 12:34
  • 1
    I agree. A very nice solution
    – j sad
    Jul 16, 2019 at 18:14
  • 1
    this is really an intuitive solution. Thank you! Oct 11, 2019 at 1:41

Add these to .vimrc to enable tab navigation hot keys:

<ctrl-l> toggle between 2 most recent tabs;

<ctrl-j/k> goto the last/next tab;

<ctrl-t> open a new tab.

" tab navigation: Alt or Ctrl+Shift may not work in terminal: " http://vim.wikia.com/wiki/Alternative_tab_navigation " Tab navigation like Firefox: only 'open new tab' works in terminal nnoremap <C-t> :tabnew<CR> inoremap <C-t> <Esc>:tabnew<CR> " move to the previous/next tabpage. nnoremap <C-j> gT nnoremap <C-k> gt " Go to last active tab au TabLeave * let g:lasttab = tabpagenr() nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr> vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>

  • Is it possible to map <Ctrl>-<Tab> to the last toggle tab function. I've tried nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr> and vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr> without luck.
    – zzeroo
    Sep 18, 2019 at 9:16

(Unfortunately) vim also uses CtrlPgDn/PgUp to cycle through tabs. You'll need to use map to map tabn/tabp to something usable.


If you're using gvim or similar (i.e., something outside of the terminal), you can imitate the gnome-terminal behaviour you describe with:

" Map alt-x keys to jump to a tab
for i in range(1, 8)
  execute "nmap \<M-" . i . "> " . i . "gt"
nmap <M-9> :tablast<CR>

So alt-1 jumps to the first tab, etc. But alt-9 jumps to the last tab (as in Chrome).

You might want to wrap this in if has("gui_running") (although this doesn't seem to work with Neovim), or put this in .gvimrc.

  • Lol I don't know why Although This is the Only answer that satisfies the question Yet the least up-voted one Mar 31, 2021 at 19:20
  • 1
    @MahmoudSalah - it's likely b/c this Q&A comes up 1st on google and most ppl looking for this solution aren't on Linux.
    – slm
    May 29, 2021 at 12:40

I encountered this problem the same as you,
but later I find out what I really need might be a Marker.
Especially when using uppercase characters like mA ,
It will take you to your marked tab by using "`A" as fast as it can.
Hope it can help.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.