2016-05-12 5 views
5

नौसिखिया प्रश्न के लिए खेद है। मैं जानना चाहता हूं कि कैसे vim केवल पढ़ने-योग्य फ़ाइल लिखने का प्रबंधन करता है। मेरे पास टेक्स्ट फ़ाइल पर 555 अनुमतियां हैं I लेकिन, जब मैं & खोलता हूं तो कुछ लिखता हूं और करता है: डब्ल्यू! , फ़ाइल में किए गए परिवर्तन सहेजे गए हैं। मुझे आश्चर्य है कि पृष्ठभूमि में यह कैसे कर रहा है !! क्या यह अस्थायी रूप से 755 पर अनुमतियों को बदलने और इसे लिखने और अनुमतियों को वापस करने की तरह है? कृपया प्रबुद्ध करें।विम एक रीड-ओनली फ़ाइल कैसे लिखता है?

उत्तर

7

संपादित करें: मैंने मूल रूप से सही के साथ उत्तर दिया, लेकिन आखिरकार यूनिक्स अनुमतियों के काम पर अप्रासंगिक जानकारी: यह वह नहीं था जो विम कर रहा था।

दरअसल, तुम सही हो:

/* When using ":w!" and the file was read-only: make it writable */ 
if (forceit && perm >= 0 && !(perm & 0200) && st_old.st_uid == getuid() 
       && vim_strchr(p_cpo, CPO_FWRITE) == NULL) 
{ 
    perm |= 0200; 
    (void)mch_setperm(fname, perm); 
    made_writable = TRUE; 
} 

और बाद में इसे वापस रीसेट: अगर यह करने की जरूरत है जब आप :w! जारी है, और आप यूनिक्स पर हैं, विम लिखने की अनुमति जोड़ देगा

नोट:: टी

if (made_writable) 
    perm &= ~0200;  /* reset 'w' bit for security reasons */ 

यह भी मदद में दिखाई देता है वह
फ़ाइल और ब्रेक (प्रतीकात्मक) लिंक की अनुमति और स्वामित्व बदल सकता है। इससे बचने के लिए 'डब्ल्यू' ध्वज 'cpoptions' में जोड़ें।

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