我在vim中关闭了一个标签,并立即意识到我需要再次重新打开它。有没有办法在Vim 7.2中撤消关闭标签?
答案 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。
但是在标签的情况下,我们可以通过保留标签计数并计算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>