我在 vim 中关闭了一个选项卡,并立即意识到我需要重新打开它。有没有办法在 Vim 7.2 中撤消关闭选项卡?
6 回答
您的文件可能仍在缓冲区中打开:
:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number
要重新打开缓冲区 18,例如:
:tabnew +18buf
:tabnew#
在新选项卡中重新打开最近关闭的文件
编辑:请使用 grayfade 的答案。我不喜欢我的答案,但我将其保留在这里以供参考和有用的评论信息。
我正在使用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 列表。
简单的答案是否定的,没有任何内置的。
但是一个可行的解决方案是使用像优秀的BufExplorer这样的插件。由于它默认首先列出最近使用的缓冲区,因此重新打开关闭的选项卡就像按下一样简单\bet
使用插件 Ben 建议:BufExplorer Github Mirror
在他的回答中,必须按<Leader>be<Down>t
。添加一点快捷方式:
map <silent><leader>t <leader>be<Down>t
这样就<leader>t
可以完成工作。
如果发生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>