2012-09-23 12 views
10

क्या पुन: विद्रोह करने का कोई तरीका है: विम में आकस्मिक रूप से बाहर निकलने से रोकने के लिए एक जटिल परिसर में q?आकस्मिक रूप से विम छोड़ने से कैसे रोकें?

+10

: q पर्याप्त जटिल नहीं है? मैंने कभी गलती से खुद को मारा नहीं ... –

+0

मैं @EricJ से सहमत हूं। आपको ':' टाइप करना होगा, फिर 'q', फिर एंटर दबाएं। क्या सामान्य आदेश है कि * छोड़ नहीं है * उसके करीब है? –

+0

@ किथ थॉम्पसन - ठीक है, 'क्यू:' उस के करीब है, बोलने के तरीके में। मुझे नहीं पता कि यह कितना आम है। – Rook

उत्तर

5

आप किससे डरते हैं? विम आपको छोड़ने नहीं देगा (! कमांड संशोधक के बिना, वैसे भी) जब भी आपके पास सहेजे गए परिवर्तन नहीं होते हैं, तो एकमात्र चीज जिसे आप संभावित रूप से खो देंगे, वह विंडो स्थिति, आकार और शायद जीवीआईएम की टास्कबार स्थिति है।

वैसे भी, :q तरह निर्मित आदेशों ओवरराइड करने के लिए, तो आप इस तरह cmdalias plugin उपयोग कर सकते हैं,:

:Alias q if\ winnr('$')>1||tabpagenr('$')>1||confirm('Really\ quit?',\ "&OK\\n&Cancel")==1|quit|endif 

(:q जरूरी विम से बाहर नहीं) पिछली विंडो के लिए यह जाँच करता है, और एक पुष्टिकरण सम्मिलित करता है ।

+0

समस्या यह है कि 'q' बहुत करीब है!' '। – Qix

+2

@Qix: लेकिन आपको आमतौर पर '!' प्राप्त करने के लिए Shift की आवश्यकता होती है; न तो 'क्यू 1' और न ही 'क्यू!' किसी भी नुकसान के लिए। यदि आप वसा-छूत से पीड़ित हैं, तो भी आपको विम में बहुत मज़ा नहीं होगा, वैसे भी। –

+0

मैं आंशिक रूप से मुखर था। यह पहला उदाहरण था जिसे मैंने कभी भी वसा उड़ाया है 'क्यू!' कुछ सालों में मैं विम, लॉल का उपयोग कर रहा हूं। – Qix

2

आप :q आदेश को हटाने के लिए कुछ इस तरह उपयोग कर सकते हैं:

:cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'echo' : 'q')<CR> 

यह abbreviates आदेश मोड में echo को q, लेकिन अगर q पहले में नहीं है संक्षिप्त नाम को गति प्रदान करने की अनुमति नहीं है स्तंभ। इस तरह, edit q संक्षिप्त नहीं होगा edit echo

11

आप क्या चाहते हैं :close है। यह :q तरह काम करता है, लेकिन नहीं दूँगी आप अंतिम विंडो बंद:

http://vimdoc.sourceforge.net/htmldoc/windows.html#:close

आप एक उपनाम सेट कर सकते हैं q आदेश close को मैप करने के लिए: इस के लिए

cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'close' : 'q')<CR> 

धन्यवाद @Paradoxial : cabbrev चाल।

2

ConfirmQuit.vim: एक पुष्टि संवाद जब आप किसी विशेष फ़ाइल के लिए

autocmd bufenter c:/intranet/notes.txt cnoremap <silent> wq<cr> call ConfirmQuit(1)<cr> 

का उपयोग कर के रूप में मैं केवल इस चाहता था इस पर से vim

http://www.vim.org/scripts/script.php?script_id=1072

मैं इस अनुकूलित छोड़ने की कोशिश प्रदान करता है

+0

धन्यवाद! हालांकि , सादे vim का उपयोग करता है ConfirmQuit.vim दूर करने के लिए "अगर है चाहता हूँ का उपयोग कर (" gui_running ")" –

8

मुझे पता है, मुझे पता है, यह एक बहुत पुराना सवाल है, लेकिन मेरे पास आज भी यही सवाल था और मुझे यह पोस्ट पहले मिला। मैंने .vimrc

function! ConfirmQuit(writeFile) 
    if (a:writeFile) 
     if (expand('%:t')=="") 
      echo "Can't save a file with no name." 
      return 
     endif 
     :write 
    endif 

    if (winnr('$')==1 && tabpagenr('$')==1) 
     if (confirm("Do you really want to quit?", "&Yes\n&No", 2)==1) 
      :quit 
     endif 
    else 
     :quit 
    endif 
endfu 

cnoremap <silent> q<CR> :call ConfirmQuit(0)<CR> 
cnoremap <silent> x<CR> :call ConfirmQuit(1)<CR> 

मुझे उम्मीद है कि यह किसी की सहायता करेगा।

+1

धन्यवाद किसी को भी! मैं एक और प्लगइन नहीं चाहता था! –

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