2009-02-21 9 views
69

Cierro una pestaña en vim y de inmediato me doy cuenta de que necesito volver a abrirla para algo. ¿Hay alguna forma de deshacer la pestaña cerrar en Vim 7.2?Deshacer Cerrar pestaña en Vim

+0

Puede esto ser movido a vi.stackexchange.com? – Sukima

+0

Hola, [este fragmento de vimscript y el plugin de ventana emergente] (https: //www.reddit.com/r/vim/comments/3ke941/undo_close_tab/cux8gh2) hace el trabajo: vuelve a abrir la pestaña que acaba de cerrar y recupera el diseño de la ventana que tenía. –

Respuesta

9

Estoy usando un MRU (most recently used files) plugin. Así que puedo editar los últimos 30 archivos que acabo he editado

aquí están los metadatos complemento MRU:

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

Uso

para enumerar y editar archivos de la lista MRU, se puede usa el comando ": MRU". El comando ": MRU" muestra la lista de archivos MRU en una ventana temporal de Vim. Si la ventana de MRU ya está abierta, entonces la lista de MRU mostrada en la ventana se actualiza.

+5

¿Puedes resumir el uso básico? –

+0

No entiendo esta respuesta ... ¿Parece que está recomendando el uso de un complemento? – Carpetsmoker

+0

@ Carpetsmoker Sí, es: mru.vim. – trusktr

6

La respuesta simple es no, no hay nada incorporado.

Pero una solución viable sería utilizar un complemento como el excelente BufExplorer. Dado que el valor predeterminado es una lista de los tampones utilizados más recientemente en primer lugar, volver a abrir una pestaña cerrada sería tan sencillo como pulsar \bet

+0

Según lo mencionado por Lucia, primero debe bajar con ' ser t' para que funcione. –

114

Su archivo es probable que todavía se abre en una memoria intermedia:

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

reabrir memoria intermedia 18, por ejemplo:

:tabnew +18buf 
+0

no funciona para mí – Chris

+5

Lo hace por mí. Lo probé justo antes de publicarlo. – greyfade

+5

': tabnew N' no funcionó para mí. Lo que hago es ': tabnew' y luego': bN' donde N es el número del buffer – alf

1

Utilice el plug-in de Ben sugerida: BufExplorer Github Mirror

En su respuesta habría que presionar <Leader>be<Down>t. Adición de un acceso directo bits:

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

Así que simplemente <leader>t haría el trabajo.

23
:tabnew# 

vuelve a abrir archivo cerrado recientemente en una nueva pestaña


Editar: Por favor, use la respuesta de greyfade. No me gusta mi respuesta, pero la guardo aquí para obtener referencias e información útil sobre los comentarios.

+0

No funcionó para mí - Vim 7.4 –

+0

Extraño, parece que funcionó al principio, ahora está abriendo buffers no relacionados. –

+0

'#' es el último archivo editado en la ventana actual. Cerrar una pestaña no registra el archivo como el alternativo ('#'). Tienes que buscarlo por el número de buffer (': ls') – Sukima

1

Si hubiera un evento BufferClose esto sería fácil ... but it seems that it is not possible since it is not possible for window creation.

Pero en el caso de las pestañas podemos detectar si una pestaña se cerró manteniendo un conteo de pestañas y contando la diferencia entre TabLeave y TabEnter.

Uso: <leader>tr vuelve a abrir la última pestaña cerrada en una nueva pestaña (suponiendo que la pestaña tenía solamente un solo buffer):

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> 
Cuestiones relacionadas