[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:
:tabnew +18buf
:tabnew#
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
Usage
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 \bet
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 TabLeave
and TabEnter
.
Usage: <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
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.