Отменить закрытие вкладки в Vim
Я закрываю вкладку в vim и сразу понимаю, что мне нужно снова открыть ее для чего-то. Есть ли способ отменить закрытие вкладки в Vim 7.2?
6 ответов:
Я использую MRU (самые последние используемые файлы) плагин. Так что я могу редактировать последние 30 файлов, которые я только что редактировал
здесь представлены МРУ плагин метаданных:
File: mru.vim Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com) Version: 3.2 Last Modified: September 22, 2008
использование
для перечисления и редактирования файлов из списка MRU можно использовать команду": MRU". Команда": MRU " отображает список файлов MRU во временном окне Vim. Если окно MRU уже открыто, затем список MRU отображается в окне обновляется.
ваш файл, вероятно, все еще открыт в буфере:
:ls " get the buffer number :tabnew +Nbuf " where N is the buffer number
для повторного открытия буфера 18, например:
:tabnew +18buf
:tabnew#
открылся недавно закрытый файл в новой вкладке
Edit: пожалуйста, используйте ответ greyfade. Мне не нравится мой ответ, но я держу его здесь для ссылок и полезной информации о комментариях.
простой ответ-Нет, нет ничего встроенного.
но работоспособным решением было бы использовать плагин, как отличный BufExplorer. Поскольку по умолчанию он сначала перечисляет самые последние используемые буферы, повторное открытие закрытой вкладки будет так же просто, как нажатие
\bet
используйте плагин Бен предложил:BufExplorer На GitHub Зеркало
в его ответе нужно было бы нажать
<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>