Отменить закрытие вкладки в Vim


Я закрываю вкладку в vim и сразу понимаю, что мне нужно снова открыть ее для чего-то. Есть ли способ отменить закрытие вкладки в Vim 7.2?

6 69

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>