Vim Tips Wiki
Advertisement
Tip 1347 Printable Monobook Previous Next

created September 29, 2006 · complexity basic · author mchenryk · version 7.0


Add the following lines to your vimrc:

map <C-t> :tabnew<CR>
map <C-left> :tabp<CR>
map<C-right> :tabn<CR>

Then in gvim you have the following commands:

  • Ctrl-t – open a new tab
  • Ctrl-left arrow – move one tab to the left
  • Ctrl-right arrow – move one tab to the right

Basic Navigation

:tabs         list all tabs
:tabm 0       move the current tab first
:tabm {i}     move the current tab to the i+1 position
:tabn         move to (view) the next tab
:tabp         move to (view) the previous tab
:tabfirst     move to the first tab
:tabf {file}  open a new tab with the filename given, searching the 'path' to find it
:tabc         close the current tab
:tabc {i}     close the i-th tab
:tabo         close other tabs

For basic tab navigation, it is probably more convenient to use the built-in normal-mode commands:

gt            move to (view) the next tab
gT            move to (view) the previous tab
{i}gt         move to (view) the tab in the i-th position

Comments

 TO DO 

  • No point having a tip change the default keybindings for :tabn and :tabp. Explain the defaults.
  • Merge in any useful comments from below.
  • Perhaps rename to "Using tab pages" (a simpler title that attempts to avoid confusion with the tab key).

Does not work in [ax]term.


Or you could use gt and gT without having to move your hands across the keyboard. Also, gt can take the tab number to jump directly to a tab.


I use Vim in Windows, so remapping C-Left isn't great for me. These are the mappings I use:

" Tab mappings
map <S-Up> :tabclose<CR>
map <S-Down> :tabnew<CR>
map <S-Left> gT
map <S-Right> gt
map <S-PageUp> :tabfirst<CR>
map <S-PageDown> :tablast<CR>

I used down for a new tab because I'm used to that from Opera's mouse gestures.


I prefer gt and gT. In any case <C-PgUp> and <C-PgDn> are the defaults for the same operations.

Just opening a new tab is kind of useless. I find :tabe <filename> more useful.


Instead of :tabe filename, I like :tabf filename, because it walks the path to find the name, instead of relying on an required explicit path/filename.


If you are working with tags or cscope, <Ctrl-T> is for popping the stack.


I think this can be condensed to:

:tab sp<CR>

Alternative way to move current window to a new tab is: <Ctrl-w> T (capital).

Possibly useful information from tip 1313 (now removed)

:tabo         " only this tab (close other tabs)
:tab ball     " show each buffer in a tab

" Set tab label to show buffer number, filename, if modified.
:set guitablabel=%n/\ %t\ %M

When starting Vim, the -p option opens each file in a tab, for example:

gvim -p *.txt

From comment in tip 259 (now removed)

Press F8 to show all buffers in tabs, or to close all tabs (toggle).

let g:toggleTabs = 0
nnoremap <silent> <F8> :if g:toggleTabs<Bar>:tabo<Bar>:let g:toggleTabs = 0<Bar>:else<Bar>:tab ball<Bar>:let g:toggleTabs = 1<Bar>:endif<CR>

Whereas it's definitely useful to have a tip covering tab pages, I'd like to see a disclaimer explaining what tab pages are not, i.e. the same as tabs in a tabbed editor like Eclipse or Visual Studio. This (admittedly rather bold) text is what #vim uses to help "misguided" users realize what tab pages are not:

Tabs are not buffers, don't try to force them to act like buffers. Consider tabs like viewports, layouts or workspaces. Tabs is a terrible name. Trying to setup 1 tab == 1 buffer is an exercise in futility. Do :set hidden and get started. Get FuzzyFinder, LustyExplorer or BufExplorer to make getting around your buffers easier.

We also recommend that new users read godlygeek's introduction to buffers, windows and tab pages. That we have created these quick responses might give you a clue as to how many questions we get concerning the 1 tab == 1 buffer setup. :) (Spiiph 22:32, 8 August 2009 (UTC))

Advertisement