यहाँ एक और तरीका :write
(शॉर्टकट :w
) और :update
(शॉर्टकट :up
) के बीच अंतर समझाने के लिए है:
जब भी हम टाइप :w
, विम सचमुच फाइल करने के लिए बफर लिखेंगे, कोई फर्क नहीं पड़ता बफर खाली है या नहीं। MEANs यह टाइमस्टैम्प को फ़ाइल के :w
पर अपडेट किया जाएगा, भले ही फ़ाइल की सामग्री वास्तव में परिवर्तित नहीं हुई हो।
:up
साथ रहते हुए, vim सहायता पुस्तिका जैसे कहते हैं, विम केवल टाइमस्टैम्प जब फ़ाइल बदल दिया गया है अद्यतन करेगा।
उदाहरण के लिए
, जब मैं सिर्फ पढ़ने के लिए एक फ़ाइल को खोलने, लेकिन मैं गलती से हो सकता है (या, आदतन) :w
या :wq
, टाइप करें और अगर मैं (यानी अंतिम संशोधित समय) फ़ाइल के timestamps के बारे में देखभाल कर , तो कोई मोड़ वापस नहीं है।निम्न उदाहरण (bash शेल में) दिखाने के प्रभाव:
$ touch test.txt
$
$ stat test.txt
File: `test.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828498 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-15 22:30:52.159258193 +0800
Modify: 2014-03-15 22:30:52.159258193 +0800
Change: 2014-03-15 22:30:52.159258193 +0800
अब फ़ाइल विम और क्रमशः :up
और :w
आदेश की कोशिश करते हैं:
$ vim test.txt
संपादन मत करो, बस टाइप :up
और फिर :q
$ stat test.txt
File: `test.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828498 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-15 22:33:10.002269244 +0800 <--- Different!
Modify: 2014-03-15 22:30:52.159258193 +0800 <--- Didn't Change!
Change: 2014-03-15 22:30:52.159258193 +0800 <--- Didn't Change!
जैसा कि आप देख सकते हैं, केवल एक्सेस समय बदल गया है, ऐसा इसलिए है क्योंकि हम फ़ाइल में डेटा को पढ़ते हैं (एक्सेस) करते हैं। लेकिन संशोधित समय & परिवर्तन समय अभी भी वही है।
अब vim फिर चलो और :w
आदेश का उपयोग करें।
$ vim test.txt
संपादन नहीं है, लेकिन इस बार प्रकार :w
और फिर :q
$ stat test.txt
File: `test.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828538 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-15 22:40:26.728239153 +0800 <--- Different Again!
Modify: 2014-03-15 22:40:26.728239153 +0800 <--- Changed!
Change: 2014-03-15 22:40:26.728239153 +0800 <--- Changed!
अब हम :up
और :w
के बीच अंतर देख सकते हैं! फ़ाइल का डेटा संशोधित किया गया है और फ़ाइल की स्थिति भी बदली गई है, हालांकि फ़ाइल में वास्तव में नहीं बदला गया है।
तो इस से बचने के लिए, एक :w
आदेश :map :w :up
का उपयोग कर :up
आदेश को मैप कर सकते हैं।
आप अपडेट कमांड के साथ बैंग ('!') का उपयोग कर सकते हैं। – ZyX