ভিআইএমের সাথে নতুন ফাইল লেখার সময় অনুমতি বিটগুলি বজায় রাখুন


8

ভিমে, আমি যখন নতুন ফাইলটিতে বর্তমান বাফারের একটি অনুলিপি লিখি তখন :w [filename]দেখা যায় যে ভিম নতুন ফাইলের জন্য ডিফল্ট (অর্থাত্ উমাস্ক বা যে কোনও কিছু দ্বারা সেট করা) ফাইল অনুমতি ব্যবহার করে। যদি বর্তমান বাফারটি কোনও বিদ্যমান ফাইল থেকে লোড করা হয়, তবে, "ডান" আচরণটি সেই ফাইল থেকে অনুমতিগুলি নকল করা উচিত নয় ? উদাহরণস্বরূপ, আমি একটি এক্সিকিউটেবল ফাইল সম্পাদনা, এবং আমি ফাইল একটি নতুন অনুলিপি লেখেন, তাহলে কেন তেজ একটি নতুন লিখতে না এক্সিকিউটেবল ? ! chmod --reference % [newfilename]নতুন ফাইলটি লেখার পরে যেমন কিছু করা ছাড়া আমি কীভাবে বর্ণনা করছি সেভাবে আচরণ করার জন্য কি ভিমকে বাধ্য করার কোনও উপায় আছে ?


সম্ভবত সম্পর্কিত: unix.stackexchange.com/q/58880/22703
allquixotic

আমি মনে করি উত্তরটি ইতিমধ্যে প্রশ্নটিতে রয়েছে - আপনার উচিত একটি ম্যাক্রো বা কী-বাইন্ডিং তৈরি করা যা এটি chmodআপনার পক্ষে হয়। আফাইক, ভিমে এই বিল্ট ইন নেই
কেভিন প্যাঙ্কো

উত্তর:


3

আপনি এই মত কিছু করতে পারে। প্রথমে আসল ফাইলটির নাম ক্যাপচার করুন।

au BufRead * let b:oldfile = expand("<afile>")

তারপরে, আপনি যখন নতুন ফাইলটি সংরক্ষণ করবেন, তার অনুমতিগুলি মূল ফাইলের মতো হবে change

au BufWritePost * if exists("b:oldfile") | let b:newfile = expand("<afile>") | if b:newfile != b:oldfile | echo system("chmod --reference=".b:oldfile." ".b:newfile) | endif |endif

কেবলমাত্র ~ / vimrc এ aut দুটি স্বতঃসমান্তকে রেখে দিন।


এই উত্তরটি সন্ত্রস্ত, কিন্তু আমি এক পরামর্শ আছে: পরিবর্তন echo system(ইত্যাদি silent echo system(ইত্যাদি এই এড়াতে "প্রেস অব্যাহত রাখার জন্য লিখুন" স্তব্ধ।
কাইল স্ট্র্যান্ড

@ কাইলস্ট্র্যান্ড: আমি call system(...ডিসপ্লেতে কোনও কিছু মুদ্রণ এড়াতে পারতাম , তবে আমি কমান্ডের সমস্যাটি নিঃশব্দে ব্যর্থ হওয়ার চেষ্টা করছিলাম। যদি আপনি ভাবেন না যে এটি কখনই ব্যর্থ হবে, বা কখনও কখনও ব্যর্থতার চেয়ে মাঝে মাঝে ব্যর্থতার সাথে বাঁচবে Press ENTER...তবে আমি আপনার পরামর্শের সাথে একমত agree আমি মনে করি এর চেয়ে ভাল সমাধান হ'ল কোনও ফাংশন লিখতে হবে যা সিস্টেমের আউটপুট () আউটপুট দেয় এবং খালি না হলে কেবল এটিকে প্রতিধ্বনি দেয়। আমি এটি প্লাগিনগুলিতে করেছি এবং এটি বেশ ভালভাবে কাজ করে।
গ্যারিজহান

যথেষ্ট ফর্সা। আমি উইমস্ক্রিপ্ট মোটেও খুব ভাল করে বুঝতে পারি না, কাজেই এটি কার্যকর হবে কিনা তা দেখার জন্য আমি কেবল "নীরব" হয়ে গিয়েছিলাম এবং যখন এটি ঠিক আছে বলে মনে হয় আমি ঠিক আমার .vimrc ছেড়ে চলে এসেছি। আমি অবশ্যই দৃ Press ENTER,though ়র মাঝে মাঝে মাঝে ব্যর্থতা পছন্দ করব, তাই আমার মনে হয় আমি হয় আটকে থাকব silentবা ব্যবহার করব call। আবার পরামর্শের জন্য ধন্যবাদ!
কাইল স্ট্র্যান্ড

0

নিশ্চিত করুন যে ফাইলে কোনও সংরক্ষিত পরিবর্তন নেই এবং তারপরে cpএকটি অনুলিপি তৈরি করতে ব্যবহার করুন । এর ফলে মূল হিসাবে একই অনুমতিগুলির সাথে একটি অনুলিপি হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.