在Vim中撤消关闭选项卡

时间:2009-02-21 02:14:54

标签: vim tabs

我在vim中关闭了一个标签,并立即意识到我需要再次重新打开它。有没有办法在Vim 7.2中撤消关闭标签?

6 个答案:

答案 0 :(得分:125)

您的文件可能仍在缓冲区中打开:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

重新打开缓冲区18,例如:

:tabnew +18buf

答案 1 :(得分:26)

:tabnew#

在新标签页中重新打开最近关闭的文件


修改:请使用greyfade的答案。我不喜欢我的回答,但我在这里保留它以供参考和有用的评论信息。

答案 2 :(得分:9)

我正在使用MRU (most recently used files) plugin。所以我可以编辑我刚刚编辑的最后30个文件

以下是MRU插件元数据:

File: mru.vim
Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
Version: 3.2   Last Modified:
September 22, 2008
  

用法

     

要列出和编辑MRU列表中的文件,可以使用“:MRU”命令。   “:MRU”命令在临时Vim窗口中显示MRU文件列表。如果   MRU窗口已打开,然后MRU列表显示在窗口中   刷新了。

答案 3 :(得分:6)

简单的答案是否定的,没有任何内置的东西。

但一个可行的解决方案是使用像优秀BufExplorer这样的插件。由于它默认首先列出最近使用的缓冲区,因此重新打开关闭的标签就像按\bet

一样简单

答案 4 :(得分:1)

使用插件Ben建议:BufExplorer Github Mirror

在他的回答中,必须按<Leader>be<Down>t。添加位快捷方式:

map <silent><leader>t <leader>be<Down>t

这样只需<leader>t即可完成工作。

答案 5 :(得分:1)

如果有BufferClose事件,这很容易...... but it seems that it is not possible since it is not possible for window creation

但是在标签的情况下,我们可以通过保留标签计数并计算TabLeaveTabEnter之间的差异来检测标签是否已关闭。

用法:<leader>tr重新打开新选项卡上的最后一个关闭选项卡(假设选项卡只有一个缓冲区):

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>