আমার কোনও ফাইলের বিষয়বস্তু দেখার সমস্যা ছিল, ফাইলটি বাহ্যিকভাবে আপডেট করুন, পরিবর্তিত ফাইলটি প্রদর্শন করুন এবং প্রয়োজনে এটি সম্পাদনা করার বিকল্প আছে have আমি এই উত্তরটি দিয়ে অনুপ্রাণিত হয়ে ভিএম সার্ভার / রিমোট কমান্ড লাইন বিকল্পগুলি দিয়ে এটি সমাধান করেছি ।
নিম্নলিখিত কমান্ডগুলির সাহায্যে একটি ফাইল বাহ্যিক কমান্ডের মাধ্যমে পুনরায় লোড করা যায়। প্রথমে সার্ভারের উদাহরণটি শুরু করার সময়, ভিমের সাথে প্রশ্নযুক্ত ফাইলটি খুলুন।
vim --servername JABBERWOCKY /tmp/alice.log
ফাইল জেনে নিই বাইরে পরিবর্তন করা হয়েছে, একটি দ্বারা যেমন echo "Curiouser and curiouser" >> /tmp/alice.log
। যখন প্রয়োজন হয়, ফাইলটি পুনরায় লোড করার জন্য সার্ভারের দৃষ্টিতে একটি আদেশ পাঠান। এই আদেশটি দ্রুত শেষ হবে এবং কোনও নতুন সম্পাদককে স্প্যান করবে না।
vim --servername JABBERWOCKY --remote-send ":e<CR>"
যদি খোলা ফাইলটি ভিমে এবং বাহ্যিকভাবে পরিবর্তিত হয় তবে পুনরায় লোডের সময় একটি বিরোধ হবে (একটি সতর্কতা বার্তা উপস্থিত হবে)। সেক্ষেত্রে একটি সিদ্ধান্ত নিতে হবে: এটিকে এটি দিয়ে ছেড়ে যান এবং ভিমে পরিবর্তন রাখুন, বা স্থানীয় পরিবর্তনগুলি বাতিল করুন এবং পুনরায় লোড করার জন্য বাধ্য করুন ।
--remote-send
উপরের কমান্ডটির জন্য ম্যানুয়াল পুনরায় লোড করা প্রয়োজন। তবে, কমান্ডটি একটি সাধারণ লুপের সাথে বাশের for
/ while
অথবা লিনাক্স / ইউনিক্সে একটি হ্যাকি ওয়ান-লাইনার ব্যবহার করে বাঁধা যেতে পারে :
watch -n 1 'vim --servername JABBERWOCKY --remote-send ":e<CR>"'
পরীক্ষিত না হলেও, আমি নিশ্চিত যে পাওয়ারশেলের মধ্যেও এরকম কিছু উপলব্ধি করা যেতে পারে।
লিনাক্স / ইউনিক্সে একটি ইভেন্ট-চালিত পদ্ধতির মাধ্যমে ফাইল সিস্টেমের ইভেন্টগুলি শোনার মাধ্যমে উপলব্ধ করা যেতে পারে যেমন ইনোটিফাই লাইব্রেরি, যদি আপনি খুব বেশি ক্রেজি ফাইল সিস্টেম ব্যবহার না করেন। ব্যক্তিগতভাবে আমি সরঞ্জামটি প্রচুর পরিমাণে প্রবেশ করাতে পছন্দ করি যা এটি লিনাক্সের প্রধান বিতরণে অন্তর্ভুক্ত বলে মনে হয়। তারপরে আমি পেয়েছি:
echo /tmp/alice.log | entr vim --servername JABBERWOCKY --remote-send ":e<CR>"
" Compare buffer with saved version
nnoremap gd :DiffSaved<CR>