85

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

4

6 回答 6

150

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

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

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

:tabnew +18buf
于 2009-02-21T20:27:06.433 回答
35
:tabnew#

在新选项卡中重新打开最近关闭的文件


编辑:请使用 grayfade 的答案。我不喜欢我的答案,但我将其保留在这里以供参考和有用的评论信息。

于 2014-03-26T19:19:22.953 回答
12

我正在使用MRU(最近使用的文件)插件。所以我可以编辑刚刚编辑的最后 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 列表。

于 2009-02-23T11:52:31.707 回答
6

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

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

于 2009-02-21T02:54:39.567 回答
1

使用插件 Ben 建议:BufExplorer Github Mirror

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

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

这样就<leader>t可以完成工作。

于 2014-02-12T06:43:24.783 回答
1

如果发生BufferClose事件,这将很容易......但似乎不可能,因为创建窗口是不可能的

TabLeave但是对于选项卡,我们可以通过保持选项卡计数并计算和之间的差异来检测选项卡是否已关闭TabEnter

用法:<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>
于 2014-10-24T21:28:23.670 回答