linux - linux - In vim, how can I quickly switch between tabs? - answerstu - answerstu.com answerstu

linux - In vim, how can I quickly switch between tabs?

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?

7 Answers

  1. Alan- Reply

    2019-11-15

    Next tab: gt

    Prior tab: gT

    Numbered tab: nnngt

  2. Albert- Reply

    2019-11-15

    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>
    
  3. Andrew- Reply

    2019-11-15

    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.

  4. Andy- Reply

    2019-11-15

    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.

  5. Anthony- Reply

    2019-11-15

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

  6. Arthur- Reply

    2019-11-15

    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"
    endfor
    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.

  7. Austin- Reply

    2019-11-15

    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>

Leave a Reply

Your email address will not be published. Required fields are marked *

You can use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>