2009-11-04 15 views
11

ist es möglich, etwas wie ein "vim-close/exit" -Event zu verwenden, um einige letzte Befehle auszuführen, bevor vim beendet wird?.vimrc action onclose

ich diese Zeilen in meiner config vim mein Bildschirm-Titelsatz lassen:

wenn $ TERM == 'xterm-color'

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

endif

aber wenn ich vim schließe, wird der Titel auf "Danke für fliegendes Vim" gesetzt (wo auch immer das herkommt ...)

Mein Ziel ist es, den Titel auf den alten zurückzusetzen - wenn möglich - und wenn nicht - ist etwas wie "bash" mit dem "exe" -Kommando

Also .. ist da so etwas wie ein "close -event "in vim?

Thanks :)

Antwort

12

Ja, es gibt ein "close-Ereignis" ist - eigentlich zwei von ihnen.
zitieren des vim: help {event}:

  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 

Sie sind nach dem VimLeave -Event.
Eine Arbeitsprobe sieht wie folgt aus:

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() 

Zusätzlich Sie v verwenden können: sterben abnormal Ausgang Fälle zu fangen.

+0

big big thanx ... Bit Ich habe eine kühle Alternative nach dem VimLeave funktioniert nicht gefunden: lassen & titleold = Ersatz (getcwd(), $ HOME "~", '') vim zu haben scheint ein titleold, den es beim Beenden wiederherstellt :) Jetzt setzt es ~/mein/Pfad Das ist cool :) – Beerweasle

+0

@Beerweasle Ihr Kommentar ist nicht ganz richtig, es sollte sein 'let & titleold = ersetzen (getcwd(), $ HOME, "~", "") ' Aber vielen Dank für die Idee !! – Alf