2009-11-04 17 views
11

¿es posible usar algo así como un evento "vim-close/exit" para ejecutar algunos comandos anteriores antes de que vim se cierre?.vimrc action onclose

que utilizan estas líneas en mi configuración, para que vim establece la pantalla de mi título:

si PLAZO $ == 'xterm-color'

exe "set title titlestring=vim:%t" 
exe "set title t_ts=\<ESC>k t_fs=\<ESC>\\" 

endif

pero cuando cierro vim, el título está configurado para: "Gracias por volar Vim" (donde sea que venga de ...)

Mi objetivo es restablecer el título al anterior, si es posible, y establecerlo es algo así como "bash" con ese "exe" -comando

Entonces ... ¿hay algo así como un "cierre" "evento" en vim?

Gracias :)

Respuesta

12

Sí, hay un "primer caso" - en realidad dos de ellos.
Para la cita de vim : ayuda {evento}:

  Startup and exit 
|VimEnter|    after doing all the startup stuff 
|GUIEnter|    after starting the GUI successfully 
|TermResponse| after the terminal response to |t_RV| is received 

|VimLeavePre|  before exiting Vim, before writing the viminfo file 
|VimLeave|    before exiting Vim, after writing the viminfo file 

Eres después de la VimLeave -Evento.
Una muestra de trabajo es el siguiente:

function! ResetTitle() 
    " disable vim's ability to set the title 
    exec "set title t_ts='' t_fs=''" 

    " and restore it to 'bash' 
    exec ":!echo -e '\033kbash\033\\'\<CR>" 
endfunction 

au VimLeave * silent call ResetTitle() 

Además se puede utilizar v: morir para atrapar los casos anormales de salida.

+0

grande, grande ... Gracias poco que he encontrado una alternativa fresca después de que el trabajo aún no ha VimLeave: permiten y titleold = sustituto (getcwd(), $ HOME, "~", '') vim parece tener un título antiguo, que restaura en la salida :) Ahora establece ~/mi/ruta Eso es genial :) – Beerweasle

+0

@Beerweasle su comentario no es del todo correcto, debe ser 'let & titleold = substitute (getcwd(), $ HOME, "~", "") ' Pero muchas gracias por la idea !! – Alf