Working with tabs
This episode covers the essential commands for working with Vim’s tab pages: opening and closing, switching, and moving them.
If you want to edit a file in a new tab, you can do so by editing the
:tabedit command followed by the name of the file that you want to edit. This opens a new tab containing the file that you specified.
Suppose that you are working with multiple split windows within a single tab, and you decide that, actually, I would rather work on file c in a tab of its own. You can move the currently active window into a tab of its own by issuing the command “control-double-you, shift-tee”. If we go back to the previous tab you can see that it’s no longer split, and the window containing file C has moved into a tab of its own.
If the current tab just contains a single window, then you can close the window and the tab with it by executing the
:q command. However, if the currently active tab contains multiple split windows, then the
:q command would merely close the currently active window. If you want to close the current tab and all of its windows, you can do so using the
If you have multiple tabs open and you wish to close lots of them rapidly you can do so by issuing the
:tabonly command. This will close all tabs apart from the current one.
There are several ways of navigating between tabs. Using the mouse, you can click directly on a tab to activate it. There are also key-commands, such as
gt, which will advance through the tabs. And if you are on the final tab it will go back to the beginning. Or you can do “G-shift-tee”, which will go through the tabs backwards.
If you prepend a number to the
gt command, it will jump directly to the specified tab. So if I say
4gt, it’ll go to the fourth tab.
3gt goes to the third tab, and so on.
I am accustomed to the tab navigation commands for Firefox, and I would like to port them over to my Vim environment. To do so, I include the following in my vimrc file. I can now move to neighbouring tabs with command-shift-square-bracket keys. Or I can jump straight to the second tab with command two, and so on up to nine tabs. Regardless of how many tabs are open, I can always jump to the last one with command-zero.
These mappings use the command key on the mac. For linux and windows users, replace “D” with “C” to use the control key instead.
Here I am using MacVim, which lets me drag and drop tabs to reorder them with the mouse. This won’t work if you run Vim in the terminal, but there is a command that you can use to rearrange tabs. Without any arguments,
:tabmove puts the current tab at the end.
:tabmove 0 puts the current tab to the beginning. And
:tabmove 1 places the current tab after tabpage number 1, that is, it moves the tab to position 2.