Я закриваю вкладку у vim і відразу усвідомлюю, що мені потрібно її знову відкрити для чогось. Чи є спосіб скасувати закриття вкладки у Vim 7.2?
Я закриваю вкладку у vim і відразу усвідомлюю, що мені потрібно її знову відкрити для чогось. Чи є спосіб скасувати закриття вкладки у Vim 7.2?
Відповіді:
Я використовую модуль 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, що відображається у вікні, оновлено.
Ваш файл, ймовірно, все ще відкритий у буфері:
:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number
Щоб знову відкрити буфер 18, наприклад:
:tabnew +18buf
:tabnew N
не працював у мене. Що я роблю, :tabnew
тоді :bN
де N - номер буфера
:tabnew +Nbuf
де N - номер буфера. Він повинен бути доданий знаком + і суфіксом слова "buf".
tabnew +18buf
+
посилання на рядок НЕ є посиланням на буфер, а #
не +
як :tabe #5
для відкриття буфера 5 у новій вкладці.
:tabnew#
Відкриває нещодавно закритий файл у новій вкладці
Змінити : Будь ласка, використовуйте відповідь greyfade. Мені не подобається моя відповідь, але я зберігаю її тут для довідок та корисної інформації про коментарі.
#
- останній відредагований файл у поточному вікні. Закриття вкладки не реєструє файл як альтернативний ( #
). Ви повинні шукати його за номером буфера ( :ls
)
Проста відповідь - ні, нічого вбудованого немає.
Але ефективним рішенням було б використання плагіна, такого як чудовий BufExplorer . Оскільки за замовчуванням спочатку перераховані останні використовувані буфери, повторне відкриття закритої вкладки було б таким же простим, як натискання\bet
<leader>be<Down>t
щоб це спрацювало.
Скористайтеся плагіном Ben рекомендований: BufExplorer Github Mirror
У його відповіді треба було б натиснути <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>