আমি কীভাবে কমান্ড আউটপুটটিকে ভিমে ভিএম-এ পুনর্নির্দেশ করব?


87

আমি ব্যাশ কমান্ডের আউটপুটটিকে একটি নতুন ফাইলে পুনর্নির্দেশের চেষ্টা করছি।

আমি যদি নীচের মতো পাইপটি চেষ্টা করি:

ls -la | vim

বাশ আমাকে ত্রুটিগুলি দেখায়:

Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.

আমি জানি যে আমি ভিম খুলতে পারি এবং তারপরে ব্যবহার করতে পারি:

:r !ls -la

তবে বাশ নিজেই এটি করার কোনও উপায় আছে, যাতে ভিমটি খোলা হয় এবং আউটপুটটি স্বয়ংক্রিয়ভাবে সেখানে আটকানো হয়?

উত্তর:


140

আপনি প্রক্রিয়া বিকল্প ব্যবহার করতে পারেন (এটি এমন অ্যাপ্লিকেশনগুলির সাথেও কাজ করে যা পড়তে পারে না STDIN):

vim <(ls -la)

বা vimএর থেকে পড়তে ফাংশনটি ব্যবহার করুন STDIN:

ls -la | vim -


1
আমি সত্যিই ভিএম এর বিকল্প পছন্দ করি, এটি আমাকে ডেটা ডাম্পগুলি থেকে সহজেই আউটপুট অনুসন্ধান করতে, সন্ধান করতে এবং সন্ধান করতে দেয়।
— জোসে আলেকজান্ডার ইবাররা

38

আপনি সত্যিই আপনার নিজের কাছাকাছি। আপনি কেবল একটি চরিত্র হারিয়েছিলেন।

ls -la | vim -

10
ভাল প্রযুক্তিগতভাবে এটি দুটি চরিত্র। ;)
— Cory Klein

19

আশা করি কাউকে নতুন কিছু শেখানোর জন্য এখানে আরও একটি পদ্ধতি রয়েছে।

আপনি যদি জানেন যে কমান্ডটি :r !ls -laভিমের অভ্যন্তরে কাজ করে, আপনি নীচে ভিমটি খুলতে এবং কমান্ডটি খোলার সাথে সাথে এটি সরাসরি চালানোর জন্য করতে পারেন:

vim -c ':r! ls -la'

এটি vimকমান্ড কার্যকর করার পরে খোলার সমতুল্য :r! ls -la। এটি কোনও vimকমান্ডের সাথে কাজ করা উচিত , যেখানে কমান্ড -cবিকল্পের পরে আসে ।


12

আপনি স্ট্রিন খুলতে ভিমকে বলতে পারেন:

ls -la | vim -

1

যদি আপনার লক্ষ্যটি কেবল কোনও পাঠ্য ফাইলে আউটপুট পেতে হয় তবে আপনার ভিএম অনুরোধ করার দরকার নেই। বাশ এটি দিয়ে একা করতে পারে

ls -la > outputfile.txt

1

setlocal buftype=nofile

আপনি যদি কোনও প্রতিস্থাপনের জন্য একটি উপনাম তৈরি করতে যাচ্ছেন তবে এটি একটি ভাল বিকল্প less:

seq 100 | vim +':setlocal buftype=nofile' -

এখন আপনার টাইপ করার দরকার নেই! ছাড়তে।

আরেকটি বিকল্প হ'ল:

seq 100 | vim +'nnoremap q :quit!' -

যাতে আপনি ন্যায়বিচারের সাথে প্রস্থান করতে পারেন q<enter>।


ভাল ধারণা. এই দীর্ঘ টাইপ করার চেয়ে অবশ্যই খাটো! :)
— কোড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.