Отменить закрытие вкладки в Vim - PullRequest
73 голосов
/ 21 февраля 2009

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

Ответы [ 6 ]

125 голосов
/ 21 февраля 2009

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

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

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

:tabnew +18buf
26 голосов
/ 26 марта 2014
:tabnew#

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


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

9 голосов
/ 23 февраля 2009

Я использую плагин 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 обновляется.

6 голосов
/ 21 февраля 2009

Простой ответ - нет, ничего встроенного нет.

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

1 голос

Если бы было событие 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>
1 голос
/ 12 февраля 2014

Используйте плагин Бен. Предложено: BufExplorer Github Mirror

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

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

Так что просто <leader>t сделает всю работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...