[ACCEPTED]-Undo Close Tab in Vim-tabs
Your file is probably still open in a buffer:
:ls " get the buffer number :tabnew +Nbuf " where N is the buffer number
To 1 reopen buffer 18, for example:
Reopens recently closed file in new tab
Edit: Please 3 use greyfade's answer. I don't like my answer, but 2 I'm keeping it here for references and useful 1 comment info.
I'm using an MRU (most recently used files) plugin. So I can edit the last 30 7 files I've just edited
Here are the MRU plugin 6 metadata:
File: mru.vim Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com) Version: 3.2 Last Modified: September 22, 2008
To list and edit files from 5 the MRU list, you can use the ":MRU" command. The 4 ":MRU" command displays the MRU 3 file list in a temporary Vim window. If the 2 MRU window is already opened, then the MRU 1 list displayed in the window is refreshed.
Simple answer is no, there is nothing built-in.
But 5 a workable solution would be to use a plug-in 4 like the excellent BufExplorer. Since it defaults 3 to listing the most recently used buffers 2 first, reopening a closed tab would be as 1 simple as pressing
Use the plug-in Ben Suggested: BufExplorer Github Mirror
In his answer 2 one would have to press
<Leader>be<Down>t. Adding a bit shortcut:
map <silent><leader>t <leader>be<Down>t
So 1 that simply
<leader>t would do the work.
If there were a
BufferClose event this would be easy... but it seems that it is not possible since it is not possible for window creation.
But 5 in the case of tabs we can detect if a tab 4 was closed by keeping a tab count and counting 3 the difference between
<leader>tr reopens 2 the last closed tab on a new tab (supposing 1 the tab had only a single buffer):
let g:reopenbuf = expand('%:p') function! ReopenLastTabLeave() let g:lastbuf = expand('%:p') let g:lasttabcount = tabpagenr('$') endfunction function! ReopenLastTabEnter() if tabpagenr('$') < g:lasttabcount let g:reopenbuf = g:lastbuf endif endfunction function! ReopenLastTab() tabnew execute 'buffer' . g:reopenbuf endfunction augroup ReopenLastTab autocmd! autocmd TabLeave * call ReopenLastTabLeave() autocmd TabEnter * call ReopenLastTabEnter() augroup END " Tab Restore nnoremap <leader>tr :call ReopenLastTab()<CR>
More Related questions