मैं एक ही बार में सभी बफ़र्स को कैसे पुनः लोड कर सकता हूं?


20

जब में एक सुविधा शाखा पर काम कर gitरहा हूं, तो मुझे अक्सर मुख्य शाखा में बग फिक्स करने के लिए अपने परिवर्तनों को छिपाने की आवश्यकता होती है। जब मैं परिवर्तनों पर काम कर रहा होता हूं, तो मैं git stash pop, जो फाइलों पर टाइमस्टैम्प को अपडेट करता है।

भले ही फ़ाइलें समान हों, अगली बार जब मैं सहेजने की कोशिश करता हूं, मुझे मिलता है:

चेतावनी: फ़ाइल को पढ़ने के बाद से बदल दिया गया है !!!

क्या आप वास्तव में इसे लिखना चाहते हैं (y / n)?

मैं डिस्क पर परिवर्तन होने पर हर बार फ़ाइल को स्वचालित रूप से पुनः लोड नहीं करना चाहता, केवल जब मैं git stash pop

अभी, मैं मैन्युअल रूप से प्रत्येक बफ़र को व्यक्तिगत रूप से पुनः लोड करता हूं ( :e)। क्या कोई तरीका है कि मैं एक कमांड में ऐसा कर सकता हूं?

जवाबों:


26

:help bufdoआप क्या करना चाहते हैं, इसके लिए देखें । यह बफर सूची में प्रत्येक बफर में एक कमांड निष्पादित करेगा। उदाहरण के लिए:

:bufdo e

आप कमांड :help noconfirmजारी करने से पहले पुष्टिकरण संवाद को निष्क्रिय करने के लिए भी देखना चाहते हैंbufdo

:set noconfirm

और bufdoकमांड के बाद इसे फिर से सक्षम करना ।

:set confirm

1
मजबूर करने के लिए, प्रयास करें :bufdo! e:।
kenorb

और स्क्रीन पर संदेश मुद्रण के बिना: चुप! bufdo e
वर्नर

12

आप :checktimeकमांड के साथ ऐसा कर सकते हैं । से डॉक्स :

:checkt[ime]        Check if any buffers were changed outside of Vim.
                    This checks and warns you if you would end up with two
                    versions of a file.

कमांड आपसे पूछेगा कि प्रत्येक बफर के लिए क्या करना है जिसकी फाइल में टाइमस्टैम्प है। फ़ाइलों को परिवर्तित नहीं करने के लिए इसे अक्षम करने के लिए आप :set autoreadविम को फिर से लोड करने के लिए मजबूर करने के लिए कर सकते हैं । vim जाएगा आप से पूछें कि बफर और डिस्क पर फ़ाइल के बीच सामग्री बदल गया है।

आप उपयोग में आसानी के लिए निम्नलिखित की तरह एक नक्शा सेटअप कर सकते हैं:

nnoremap <F5> :checktime<CR>

यहाँ कुछ बोनस जानकारी है जो वास्तव में उत्तर का हिस्सा नहीं है: मेरे लिए, OpenSUSE पर, gvim (vim के लिए GTK GUI) यह स्वचालित रूप से करता है जब यह फोकस प्राप्त करता है। मैं वास्तव में नहीं जानता कि ऐसा क्यों होता है और मैंने अन्य प्रणालियों पर जाँच नहीं की है, लेकिन मुझे लगा कि यह एक अतिरिक्त के रूप में उपयोगी हो सकता है। शायद कुछ पुष्टि कर सकते हैं?
तोक्योमी

यह वास्तव में मददगार है! मैंने अपने अंत में जो किया वह था इस कमांड को मेरे टैब स्विचिंग शॉर्टकट के भाग के रूप में एकीकृत करना। यानीnnoremap tl :tabnext<CR>:checktime<CR>
11:

1
@tokoyami, आपके पास मौजूद सुविधा घटना gvimसे संबंधित हो सकती FocusGainedहै vim। आप कुछ संबंधित जानकारी यहाँ पा सकते हैं - unix.stackexchange.com/a/383044/99801
विक्टर यारमा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.