在Vim中撤消closures标签
我closures了VIM中的一个标签,并立即意识到我需要重新打开它的东西。 有没有办法在Vim 7.2中撤消closures标签?
我正在使用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列表将被刷新。
您的文件可能仍然在缓冲区中打开:
:ls " get the buffer number :tabnew +Nbuf " where N is the buffer number
要重新打开缓冲区18,例如:
:tabnew +18buf
:tabnew#
在新标签中重新打开最近closures的文件
编辑 :请使用greyfade的答案。 我不喜欢我的回答,但我保留在这里作为参考和有用的评论信息。
简单的答案是没有,没有内置的东西。
但是一个可行的解决scheme就是使用像BufExplorer这样的插件 。 由于它默认首先列出最近使用的缓冲区,重新打开一个closures的选项卡就像按下\bet
一样简单
使用插件本build议: BufExplorer Github镜像
在他的回答中,必须按<Leader>be<Down>t
。 添加一个快捷方式:
map <silent><leader>t <leader>be<Down>t
所以只要<leader>t
就能完成这项工作。
如果有一个BufferClose
事件,这将是容易的… 但似乎这是不可能的,因为它是不可能的窗口创build 。
但是在选项卡的情况下,我们可以通过保持选项卡计数并计算TabLeave
和TabEnter
之间的差异来检测选项卡是否被closures。
用法: <leader>tr
在新选项卡上重新打开最后closures的选项卡(假设选项卡只有一个缓冲区):
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>