Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Я использую плагин 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" отображает список файлов MRU во временном окне Vim. Если окно MRU уже открыто, затем отображается список MRU в окне обновляется.

Ответ 2

Ваш файл, вероятно, все еще открыт в буфере:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

Чтобы повторно открыть буфер 18, например:

:tabnew +18buf

Ответ 3

:tabnew#

Открывает недавно закрытый файл на новой вкладке


Изменить. Используйте greyfade ответ. Мне не нравится мой ответ, но я держу его здесь для ссылок и полезной информации о комментариях.

Ответ 4

Простой ответ: нет, нет встроенного.

Но подходящим решением было бы использовать плагин, отличный от BufExplorer. Поскольку по умолчанию используется список самых последних использованных буферов, повторное открытие закрытой вкладки будет таким же простым, как нажатие \bet

Ответ 5

Используйте плагин Ben: BufExplorer Github Mirror

В его ответе нужно нажать <Leader>be<Down>t. Добавление битового ярлыка:

map <silent><leader>t <leader>be<Down>t

Итак, просто <leader>t выполнит работу.

Ответ 6

Если бы было событие 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>