উত্তর:
এমএক্স টোগল-কেবল পঠনযোগ্য
অথবা ইমাক্সের আরও সাম্প্রতিক সংস্করণগুলিতে
এমএক্স-পঠনযোগ্য-মোড
আমার উইন্ডোজ বাক্সে, এটি মেটা প্রম্পট আনতে Alt-x এর পরিমাণ এবং সঠিক এলিস্প ফাংশনটি কল করতে "টোগল-পঠনযোগ্য কেবল" টাইপ করে।
আপনি যদি ডিফল্ট কীবোর্ড বাইন্ডিং ব্যবহার করেন,
Cx Cq
(যা আপনি "কন্ট্রোল-এক্স কন্ট্রোল-কিউ" হিসাবে জোরে পড়েন) এর একই প্রভাব থাকবে। তবে মনে রাখবেন যে ইমাকগুলি মূলত অসীমভাবে পুনরায় কনফিগারযোগ্য, আপনার মাইলেজটি ভিন্ন হতে পারে।
ভাষ্যটি অনুসরণ করা: আপনার অবশ্যই লক্ষ্য করা উচিত যে বাফারের লিখনযোগ্য স্থিতি ফাইলটির লেখার অনুমতি পরিবর্তন করে না। আপনি যদি কেবল পঠনযোগ্য ফাইলটিতে লেখার চেষ্টা করেন তবে আপনি একটি নিশ্চিতকরণ বার্তা দেখতে পাবেন। তবে আপনি যদি ফাইলটির মালিক হন তবে আপনি ফাইলের অনুমতিগুলি পরিবর্তন না করে আপনার পরিবর্তনগুলি লিখতে পারেন ।
আপনি যদি লেখার অনুমতি যুক্ত করার, পরিবর্তনগুলি লেখার, লেখার অনুমতি অপসারণের একাধিক পদক্ষেপ না নিয়েই কোনও ফাইলটিতে দ্রুত পরিবর্তন করতে চান তবে এটি খুব সুবিধাজনক। আমি সেই শেষ পদক্ষেপটি ভুলে যাব, পরে দুর্ঘটনাজনিত পরিবর্তনের জন্য সম্ভাব্য সমালোচনামূলক ফাইলগুলি খোলা রেখে।
নিশ্চিত হয়ে নিন যে আপনি 'ফাইল' কে 'বাফার' দিয়ে বিভ্রান্ত করছেন না। আপনি বাফারকে কেবল পঠন করতে সেট করতে পারেন এবং C-x C-q
( toggle-read-only
) দিয়ে আবার ফিরে যেতে পারেন । যদি আপনার কাছে ফাইল পড়ার অনুমতি রয়েছে, তবে একটি ফাইল নেই, তবে আপনি ফাইলটি দেখার সময় বাফারটি পাবেন ( C-x C-f
বা find-file
) কেবলমাত্র পঠন মোডে স্বয়ংক্রিয়ভাবে স্থাপন করা হবে। আপনি যদি ফাইল সিস্টেমে কোনও ফাইলের অনুমতি পরিবর্তন করতে চান তবে সম্ভবত dired
ফাইলটি যে ডিরেক্টরিটি রয়েছে সেগুলি দিয়েই শুরু করুন। Dided জন্য ডকুমেন্টেশন তথ্য পাওয়া যাবে; C-h i (emacs)dired RET
।
inc
। একজন মানুষকে মাছ
যা পেয়েছি তা হ'ল M-x set-file-modes filename mode
এটি আমার উইন্ডোজ ভিস্তার বাক্সে কাজ করেছিল। উদাহরণ স্বরূপ:M-x set-file-modes <RET> ReadOnlyFile.txt <RET> 0666
(set-file-modes FILE 438)
(যেখানে 438 এর দশমিক সমতুল্য 2#0110110110
বা 666
)।
সেখানে অন্য কারও দ্বারা উল্লিখিত: এমএক্স টগল-পঠন-কেবলমাত্র কাজ করবে।
তবে এটি এখন অবচয় করা হয়েছে এবং এমএক্স-পঠন-কেবল- মোডই এটি করার বর্তমান উপায়, এটি সিক্স সি কিউ বাইন্ডিংতে সেট করা হয়েছে ।
যদি কেবল বাফার (এবং ফাইলটি নয়) কেবল পঠনযোগ্য হয় তবে আপনি ব্যবহার করতে পারেন toggle-read-only
যা সাধারণত আবদ্ধ C-x C-q
।
যদি ফাইলটি নিজেই কেবল পঠনযোগ্য হয় তবে নীচের ফাংশনটি আপনাকে দরকারী মনে করতে পারে:
(defun set-buffer-file-writable ()
"Make the file shown in the current buffer writable.
Make the buffer writable as well."
(interactive)
(unix-output "chmod" "+w" (buffer-file-name))
(toggle-read-only nil)
(message (trim-right '(?\n) (unix-output "ls" "-l" (buffer-file-name)))))
ফাংশন উপর নির্ভর করে unix-output
এবং trim-right
:
(defun unix-output (command &rest args)
"Run a unix command and, if it returns 0, return the output as a string.
Otherwise, signal an error. The error message is the first line of the output."
(let ((output-buffer (generate-new-buffer "*stdout*")))
(unwind-protect
(let ((return-value (apply 'call-process command nil
output-buffer nil args)))
(set-buffer output-buffer)
(save-excursion
(unless (= return-value 0)
(goto-char (point-min))
(end-of-line)
(if (= (point-min) (point))
(error "Command failed: %s%s" command
(with-output-to-string
(dolist (arg args)
(princ " ")
(princ arg))))
(error "%s" (buffer-substring-no-properties (point-min)
(point)))))
(buffer-substring-no-properties (point-min) (point-max))))
(kill-buffer output-buffer))))
(defun trim-right (bag string &optional start end)
(setq bag (if (eq bag t) '(?\ ?\n ?\t ?\v ?\r ?\f) bag)
start (or start 0)
end (or end (length string)))
(while (and (> end 0)
(member (aref string (1- end)) bag))
(decf end))
(substring string start end))
আপনার মধ্যে ফাংশন রাখুন ~/.emacs.el
, সেগুলি মূল্যায়ন করুন (বা ইমাকগুলি পুনরায় চালু করুন)। তারপরে আপনি বর্তমান বাফারে ফাইলটি লেখার মাধ্যমে তৈরি করতে পারেন M-x set-buffer-file-writable
।
set-buffer
বাইরে রাখার জন্য সম্পাদিত save-excursion
।
subseq
করেছি substring
। এটি সতর্কতা এড়ানো উচিত।
আপনি যদি ফাইলগুলির একটি ডিরেক্টরি দেখেন (ডায়ার্ড), তবে আপনি Shift + M
কোনও ফাইলের নাম ব্যবহার করতে পারেন modespec
এবং chmod
কমান্ডটিতে একই বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন ।
M modespec <RET>
Http://www.gnu.org/s/libtool/manual/emacs/Operating-on-Files.html ডিরেক্টরি ডিরেক্টরিতে ফাইলগুলিতে অন্যান্য দরকারী কমান্ডগুলি দেখুন
আমি Vebjorn Ljosa এর সমাধানটি চেষ্টা করে দেখেছি এবং এটি প্রমাণিত হয়েছে যে কমপক্ষে আমার Emacs (22.3.1) তে 'ট্রিম-রাইট' এর মতো কার্যকারিতা নেই, যা chmod আউটপুট শেষে একটি অকেজো নিউলাইন সরানোর জন্য ব্যবহৃত হয়।
'ট্রিম-ডান' থেকে কল সরিয়ে ফেলা সহায়তা করেছে, তবে অতিরিক্ত নিউলাইনের কারণে স্থিতি সারিটিকে "বাউন্স" করে তুলেছে।
C-x C-q
অকেজো কারণ আপনারও একটি ফাইল সংরক্ষণ করার অনুমতি প্রয়োজন।
আমি স্পেসম্যাকস ব্যবহার করি । এটি আমাকে এই প্রশ্নটি সমাধান করার জন্য একটি সুবিধাজনক ফাংশন দেয়। কোড অনুসরণ করা হচ্ছে।
(defun spacemacs/sudo-edit (&optional arg)
(interactive "p")
(if (or arg (not buffer-file-name))
(find-file (concat "/sudo:root@localhost:" (ido-read-file-name "File: ")))
(find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))
আমি ফোন করি spacemacs/sudo-edit
ইম্যাকগুলিতে একটি ফাইল খুলতে এবং আমার পাসওয়ার্ড ইনপুট জন্য , আমি কেবল পঠনযোগ্য মোড ছাড়াই ফাইলটি পরিবর্তন করতে পারি।
আপনি একটি নতুন ফাংশন লিখতে পারেন spacemacs/sudo-edit
।
toggle-read-only
কেবলমাত্র ফাইলটির নয় কেবল বাফারের পঠনযোগ্য স্থিতি টগল করে। আপনি যদি ফাইলের মোড পরিবর্তন করতে চানdired
বা ফাইলেরchmod +w
শেল কমান্ড হিসাবে ব্যবহার করতে পারেন ute