Open last closed file in a new tab in Vim

LinuxVimViMacvim

Linux Problem Overview


I know I can open the last closed (:q) file in Vim by using :e#. This will open the file in the current tab. How would I perform the same task but open the file in a new Vim tab. Also I am interested in how to open the file in a new split instead of the current tab.

Linux Solutions


Solution 1 - Linux

# is simply an Ex special character that will be replaced with the name of the alternate file. Do an :ls, and the alternate file will be marked with a # there also.

# can similarly be used with :tabnew and split. In the examples below I'll use :tabe in place of :tabnew as :tabe is a shorter alias for :tabnew (search for either in the help docs):

  • To open the alternate file in a new tab: :tabe#
  • To open the file in a new split: :split#; this can be abbreviated to :sp#, and :vsp# for a vertical split.

Using a buffer number from :ls, e.g. buffer number 5 you can also:

  • open the buffer in a split with :sp#5; alternately :sb5 if the switchbuf option contains the newtab specifier - see :help switchbuf
  • open the buffer in a vertical split with :vsp #5 (there is no :vsb)
  • open the buffer in a new tab with :tabe #5

Solution 2 - Linux

You don't necessarily have to leave normal mode to open the alternate buffer in a new window:

CTRL-W ^ opens the alternate buffer in a horizontal split.

CTRL-W T opens the current buffer in a new tab (Shift-T, that is).

So, one solution to your title question is the following combo.

CTRL-W ^, CTRL-W T: opens the alternate buffer in a new tab.

Note that for the caret "^" in the first command you don't have to release the Control key and you don't have to press Shift, just hold down CTRL then strike W and 6 (where the caret is located on many English keyboard layouts).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMatthew KirkleyView Question on Stackoverflow
Solution 1 - Linuxpb2qView Answer on Stackoverflow
Solution 2 - LinuxgltsView Answer on Stackoverflow