আমি কীভাবে শিম কমান্ডের আউটপুটটি ভিমে নতুন বাফারে পাইপ করব? নিম্নলিখিতটি স্পষ্টতই কাজ করবে না, তবে আপনি কী দেখতে পাচ্ছেন তা দেখতে পারেন:
:!echo % | :newtab
আমি কীভাবে শিম কমান্ডের আউটপুটটি ভিমে নতুন বাফারে পাইপ করব? নিম্নলিখিতটি স্পষ্টতই কাজ করবে না, তবে আপনি কী দেখতে পাচ্ছেন তা দেখতে পারেন:
:!echo % | :newtab
উত্তর:
আপনি শেল কমান্ডের আউটপুটটি কোনও কমান্ডে পাইপ করতে পারবেন না যা একটি নতুন বাফার তৈরি করে, তবে আপনি একটি নতুন বাফার তৈরি করতে পারেন এবং শিম কমান্ডের আউটপুটটি ভিফের কমান্ড লাইনে একটি প্রবেশ দিয়ে সেই বাফারে পড়তে পারেন। আপনার উদাহরণের একটি কার্যকারী সংস্করণ হবে
:tabnew | r !echo <c-r>=bufname("#")<cr>
নোট করুন যে এই ক্ষেত্রে পাইপ প্রতীকটি শিমের পাইপ নয়, ভিম প্রাক্তন কমান্ডগুলির মধ্যে বিভাজক। আরো দেখুন
:help :tabnew
:help :r!
:help :bar
:r!echoবাফারটি পরিবর্তন না করেই নয় ।
আমি যা করি তা এখানে। উপরের উত্তরের মন্তব্যে এটি ইঙ্গিত দেওয়া হয়েছে।
:new | r ! <cmd>
:new | r ! <cmd> # (# is replaced with filename)
উদাহরণ 1 : এর মধ্যে সমস্ত পাঠ্য ফাইল সন্ধান করুন/tmp
:new | r ! find /tmp -name '*.txt'
উদাহরণ 2 : আপনি foo.txt ফাইল সম্পাদনা করছেন এবং আপনি চালাতে চান ls -la foo.txtএবং আউটপুটটি একটি বাফারে পেতে চান :
:new | r ! ls -la #
#মূল ফাইলের নাম প্রতিস্থাপিত হয় তুমি সম্পাদনা বাফার। এটি অ্যাড-হক উত্স নিয়ন্ত্রণ আদেশের জন্য বিশেষত কার্যকর eg
:new | r ! hg annotate -un #
:newএকটি অনুভূমিক বিভাজন তৈরি করে, :vnewআপনি পরিবর্তে এবং :tabnewএকটি নতুন ট্যাব ব্যবহার করতে চাইলে ব্যবহার করুন want
:tabnew | enew | r ! <your shell cmd>
আমার জন্য কাজ কর.
যদি আপনার সত্যিকারের ফলাফলটি কোনও নতুন বাফারে সঞ্চয় করতে হয় তবে পুরানো বর্তমান বাফার থেকে তথ্য প্রয়োজন হয়, তবে আপনি হয় ব্যবহার করতে পারেন system():
:let res = system('echo '.expand('%'))
:tabnew
:put=res
বা বর্তমান বাফারের নামটি পরের জন্য সংরক্ষণ করুন :
:let bn = expand('%')
:tabnew | :r!echo <c-r>=bn<cr>