Annuler Fermer l’onglet dans Vim

Je ferme une languette dans vim et réalise immédiatement que je dois la rouvrir pour quelque chose. Existe-t-il un moyen d’annuler la fermeture de l’onglet dans Vim 7.2?

J’utilise un plugin MRU (les fichiers les plus récemment utilisés) . Je peux donc éditer les 30 derniers fichiers que je viens d’éditer

Voici les métadonnées du plugin MRU:

File: mru.vim Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com) Version: 3.2 Last Modified: September 22, 2008 

Usage

Pour lister et éditer les fichiers de la liste MRU, vous pouvez utiliser la commande “: MRU”. La commande “: MRU” affiche la liste des fichiers MRU dans une fenêtre Vim temporaire. Si la fenêtre MRU est déjà ouverte, la liste MRU affichée dans la fenêtre est actualisée.

Votre fichier est probablement toujours ouvert dans un tampon:

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

Pour rouvrir le tampon 18, par exemple:

 :tabnew +18buf 
 :tabnew# 

Rouvre le fichier récemment fermé dans un nouvel onglet


Edit : Veuillez utiliser la réponse de greyfade. Je n’aime pas ma réponse, mais je la garde ici pour des références et des informations utiles sur les commentaires.

La réponse simple est non, il n’y a rien intégré.

Mais une solution réalisable consisterait à utiliser un plug-in comme l’excellent BufExplorer . Comme il affiche par défaut en premier les tampons les plus récemment utilisés, rouvrir un onglet fermé serait aussi simple que d’appuyer sur \bet

Utilisez le plug-in Ben Suggéré: Miroir Github BufExplorer

Dans sa réponse, il faudrait appuyer sur bet . Ajout d’un raccourci de bit:

 map t bet 

Donc, simplement, t ferait le travail.

S’il y avait un événement BufferClose , ce serait facile … mais il semble que ce ne soit pas possible car ce n’est pas possible pour la création de fenêtres .

Mais dans le cas des tabs, nous pouvons détecter si un onglet a été fermé en conservant un nombre de tabulations et en comptant la différence entre TabLeave et TabEnter .

Utilisation: tr rouvre le dernier onglet fermé sur un nouvel onglet (en supposant que l’onglet ne contienne qu’un seul tampon):

 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 tr :call ReopenLastTab()