2009-08-13 6 views
113

आदेश में डिस्क से बफर में सभी फाइलों को रिफ्रेश :e!डिस्क पर संस्करण से एक फ़ाइल को ताज़ा करने के vim

है मैं बफर में सभी फ़ाइलों के लिए भी ऐसा ही कर सकते हैं कैसे?

पृष्ठभूमि: मुझे इसकी आवश्यकता है क्योंकि मैं एक शाखा के साथ कई शाखाओं के साथ गिट का उपयोग कर रहा हूं जिसमें एक बफर होता है। जब मैं एक शाखा चेकआउट करता हूं, तो मैं विम रीफ्रेश करना चाहता हूं।

उत्तर

83

bufdo के लिए प्रलेखन पढ़ें, यह वही करना चाहिए जो आप चाहते हैं।

+31

ठीक है तो,: bufdo e! वह करेगा। लेकिन हर बार एक त्वरित लोड (वाई/एन) है। मुझे इससे कैसे छुटकारा मिल सकता है? – odwl

+21

'bufdo' कमांड का उपयोग करने से पहले' सेट noconfirm' का उपयोग करें ('पुनः पुष्टि करने के लिए बाद में पुष्टि करें')। – pmf

+1

मैं 'bufdo e'' के बजाय 'bufdo e' (कोई विस्मयादिबोधक चिह्न) का उपयोग नहीं करता क्योंकि यह सहेजे गए परिवर्तनों का पता लगा सकता है, जहां कोई भी नहीं होना चाहिए, केवल सुरक्षित पक्ष पर रहने के लिए – Watcom

17

यहाँ क्या मैं अपने .vimrc में डाल समाप्त हो गया है:

fun! PullAndRefresh() 
    set noconfirm 
    !git pull 
    bufdo e! 
    set confirm 
endfun 

nmap <leader>gr call PullAndRefresh() 
97

:checkt[ime] आदेश यह बहुत ही उद्देश्य के लिए बनाया गया है।

यह आपको बदले गए किसी भी बफर को पुनः लोड करने के लिए संकेत देगा; अगर आप प्रॉम्प्ट को छोड़ना चाहते हैं, तो आप पहले से :set autoread कर सकते हैं (आपको अभी भी स्थानीय सहेजे गए परिवर्तनों के साथ बफर पर एक संकेत मिलेगा)।

यह स्वीकृत उत्तर पर स्टीवन लू द्वारा उल्लिखित सिंटैक्स हाइलाइटिंग मुद्दे से भी बचाता है; :bufdo turns off syntax highlighting by design

मिला के माध्यम से: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html

4

:help autoread से:

जब एक फ़ाइल विम के बाहर बदल दिया गया है करने के लिए पहचान की गई है और यह विम के अंदर नहीं बदला गया है, स्वचालित रूप से इसे फिर से पढ़ें। जब फ़ाइल हटा दी गई है तो यह नहीं किया जाता है।

, तो मेरे जैसे, आप बस को हमेशा निष्क्रिय पुनः लोड बासी बल्कि असंशोधित बफ़र्स चाहते हैं, तो इस तरह यह काम किया जाना चाहिए लगता है।

हालांकि अंतिम विवरण है जब vim stale buffer को नोटिस करता है। इसे checktime के साथ मजबूर किया जा सकता है। आप focus events set up है, तो हम checktime चलाने जब भी हम इतने तरह फोकस हासिल कर सकते हैं:

set autoread 
autocmd FocusGained * checktime 

This answer भी कुछ रोचक विवरण है।

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