2011-04-24 12 views
7

De acuerdo con answer of this question no debe salir de Vim (GVim) cuando es el último búfer. Lamentablemente cierra GVim en mi caso. ¿He entendido algo mal con bd?Vim se cierra después de eliminar el búfer (bd)

También estoy usando un archivo vimrc preconfigurado. Tal vez un ajuste allí tiene ese efecto secundario, pero no pude encontrarlo.

+0

He probado su .vimrc y no tengo el mismo problema. Debe ser algo más que lo está causando. – nocash

+0

Gracias por probar mi vimrc. Como lo mencionó ZyX, parece que es un problema con algún complemento. Publiqué la salida de su comando recomendado en su respuesta. – Zardoz

+1

Tengo mucha curiosidad por saber qué plugin estaba causando esto. Como me gustaría tener _have_ esta funcionalidad. –

Respuesta

15

Trata de hacer lo siguiente:

:set eventignore=all | bd | set eventignore= 

Si esto no va a dejar de fumar vim entonces tener algún plugin que define un AutoCommand que sale de vim cuando no hay más tampones están presentes en la lista, así que después de que trate de hacer

verbose autocmd BufWinLeave,BufLeave,BufDelete,BufUnload,BufWipeout 

Esto le mostrará todos los autocommands unidas a acontecimientos dados (estos son los eventos que se ejecutan cuando se elimina amortiguación) y en el que se definieron. Tenga en cuenta que no tengo comandos automáticos adjuntos a estos eventos que están definidos por los complementos en la distribución standart vim.

Actualización: No veo nada malo en su salida. También puedes probar

verbose autocmd BufNew,BufAdd,BufCreate,BufEnter,BufWinEnter 

(porque cuando sales del último buffer se crea uno vacío). Si esto no muestra nada sospechoso, comience a ignorar los tipos de eventos: si estás en Linux intenta la siguiente secuencia de comandos:

for event in BufWinLeave BufLeave BufDelete BufUnload BufWipeout BufNew BufAdd BufCreate BufEnter BufWinEnter 
do 
    event=$event vim file -c "set eventignore=$event | bd" 
done 

Este script debe repetir hasta que encuentre el nombre del evento que causa problemas. Después de esto, puede usar execute "verbose autocmd" $event en vim para reducir el número de complementos que deben verificarse. Después de obtener la lista de grupos autocmd (los nombres de un grupo se muestran justo antes del nombre del evento en su salida: railsPluginDetect es uno de esos grupos), elimine los eventos en ellos (augroup {GroupName} | execute 'autocmd!' | augroup END) y descubra qué complemento reclamar.

Como alternativa, puede utilizar depurador:

debug bd 

, entonces s<CR>n<CR><CR><CR>... hasta que vim se cierra; no se olvide de recordar qué vim ha mostrado antes de > antes de abandonar.

+0

Gracias por la pista. De hecho, parece que un complemento hace esto. Ejecuto el comando detallado como lo recomendó y obtuve este resultado: https://gist.github.com/939432 ¿Tiene una idea de cuál de esos complementos lo provoca y cómo sobrescribirlo de nuevo? – Zardoz

+0

@Zardoz Ver la actualización. – ZyX

+0

No estoy seguro de qué fue lo que resolvió el problema, pero ya no ocurre. Si aparece de nuevo, dejaré un comentario sobre el plugin que lo causó. Gracias por la ayuda. – Zardoz

Cuestiones relacionadas