2009-11-04 9 views
11

क्या "विम-क्लोज़/एक्जिट" जैसे कुछ का उपयोग करना संभव है- विम छोड़ने से पहले कुछ अंतिम आदेश निष्पादित करने के लिए?.vimrc action onclose

मैं अपने config में इस लाइनों का प्रयोग, vim अपनी स्क्रीन-शीर्षक सेट कर सकें:

अगर $ अवधि == 'टर्म रंग'

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

endif

लेकिन जब मैं विम बंद करता हूं, शीर्षक इस पर सेट होता है: "उड़ने के लिए धन्यवाद" (व्हीवर जो आता है ...)

मेरा लक्ष्य है कि शीर्षक को पुराने में रीसेट करने के लिए - यदि संभव हो - और यदि नहीं - सेट "exe" के साथ "bash" जैसा कुछ है- कमांड

तो .. क्या "बंद" vim में "vevent"?

धन्यवाद :)

उत्तर

12

हाँ, वहाँ एक "बंद घटना" - वास्तव में उनमें से दो। मदद {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 

आप VimLeave -Event के बाद कर रहे हैं
vim के के शब्दों में।
एक काम कर नमूना इस तरह दिखता है:

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

इसके अलावा आप वी का उपयोग कर सकते हैं: मर असामान्य बाहर निकलने के मामलों को पकड़ने के लिए। दें और titleold = स्थानापन्न (getcwd(), $ HOME, "~", '') vim है लगता है:

+0

बड़ा बड़ा thanx ... थोड़ा मैं VimLeave फ्लॉप काम के बाद एक शांत विकल्प मिल गया है एक titleold है, जो इसे बाहर निकलने :) पर पुनर्स्थापित करता अब यह तय करता है ~/मेरी/पथ Thats :) – Beerweasle

+0

शांत @Beerweasle अपनी टिप्पणी पूरी तरह से सही नहीं है, यह 'होना चाहिए जाने और titleold = स्थानापन्न (getcwd(), $ होम, "~", "") ' लेकिन विचार के लिए बहुत बहुत धन्यवाद !! – Alf

संबंधित मुद्दे