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


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.