एमएसीएस में वर्तमान बफर पर लिखने की अनुमति कैसे संशोधित करें?


17

क्या बफर को मार / फिर से खोलने के बिना, emacs के अंदर से किसी फ़ाइल पर लिखने की अनुमति को बदलना संभव है?

कभी-कभी मैं फ़ाइल खोलने से पहले अनुमतियों को संशोधित करना भूल जाता हूं। मैं ईमैक के अंदर से अनुमतियों को संशोधित कर सकता हूं ( M-! chmod u+w filename) लेकिन यह बफर को अपडेट नहीं करता है जो संरक्षित लिखा रहता है और फाइल को संशोधित करने से इनकार करता है।

क्या बफर के अंदर अनुमतियां अपडेट करने का कोई तरीका है? बोनस बिंदु अगर मैं इसे शॉर्टकट में असाइन कर सकता हूं!

जवाबों:


16

फ़ाइल मोड बदलने के बाद, और कोई भी संपादन करने से पहले, M-x revert-bufferफ़ाइल को फिर से लोड करने के लिए चलाएँ । यदि फ़ाइल अब लिखने योग्य है, तो बफ़र केवल-पढ़ने के लिए नहीं होगा।

वैकल्पिक रूप से, टाइप करें C-x C-q( read-only-mode)। यह बफर को केवल पढ़ने के लिए नहीं बनाता है। आप संपादित कर सकते हैं और सहेज भी सकते हैं, लेकिन आपको पुष्टिकरण संकेत मिलेगा कि आप केवल पढ़ने के लिए फ़ाइल अधिलेखित करना चाहते हैं।


जबकि Cx Cq अभी भी काम करता है, 24.3 emacs के रूप में यह अब केवल टॉगल-रीड-ओनली और टॉगल-रीड-ओनली के बजाय रीड-ओनली-मोड को कॉल करता है।
पॉल रुबेल

9

बफर की केवल-पढ़ने की स्थिति बदलने के लिए, C-xC-q(टॉगल read-only-mode) का उपयोग करें । फ़ाइल अनुमतियां बदलने के लिए, आप diredफ़ाइल की निर्देशिका ( C-xd) पर चल सकते हैं , फ़ाइल को खोज सकते हैं C-sऔर Mइसके मोड को बदलने के लिए उपयोग कर सकते हैं।


3
जाहिर है, आप चूक गए हैं dired-jump(सामान्य रूप से बाध्य हैं C-x C-j)। यह diredआपके द्वारा संपादित की जा रही फ़ाइल के लिए लाइन में चलता है और कूदता है।
cjm

2
@ cjm: जब तक मैं लोड नहीं करता, यह मेरे लिए काम नहीं करता है dired-x
चोराबा

क्षमा करें, मैं भूल गया था कि मैं dired-jumpलगभग 20 साल पहले एक ऑटोलॉड सेट करूँगा । मेरा यही सुझाव है।
cjm

वार्षिक toggle-read-onlyरूप से बदल दिया गया है read-only-mode, हालांकि बंधन समान है।
चार्ली मार्टिन

2

यदि वर्कफ़्लो को बार-बार बफर की फ़ाइल अनुमति को बदलने की आवश्यकता होती है, तो एक कस्टम फ़ंक्शन होने से निम्नलिखित की तरह मदद मिलेगी।

यह केवल यूनिक्स मशीनों पर काम करता है (सिस्टम कमांड "chmod" निष्पादित करता है)

(defun chmod-plus-w ()
  (interactive)
  (shell-command-to-string (concat "chmod +w " (buffer-file-name (current-buffer))))
  (revert-buffer))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.