বাশের ভিতরে কমান্ড vi


33

Vi এর ভিতরে বাশ কমান্ড টাইপ করা এবং স্টডআউট পাওয়া সম্ভব?

আমি প্রায়শই শেলটির মধ্যে কিছু সন্ধান করতে চাই বলে vi বন্ধ করে পুনরায় খোলা লাগতে ক্লান্তি লাগে ious

উত্তর:


45

হ্যাঁ, উদাহরণস্বরূপ, যদি আপনি এটি করতে চান তবে lsচেষ্টা করুন:

:!ls

শেল স্প্যান করতে, ব্যবহার করুন

:shell


দুর্দান্ত, আমি এ ছাড়া কীভাবে বাঁচতে পারি?
বীণা

3
আসলে আমি যা কিছু করি তা হ'ল কোনও কিছু সম্পাদনার সময় মূল হিসাবে vi চালানো ভুলে যায়। এই কমান্ডটি আমার মনে পড়ার চেয়ে আরও বেশি বার দীর্ঘ লেখার হাত থেকে বাঁচিয়েছে। :w !sudo tee %
মার্ক

1
আমি ইচ্ছা করি nano
gnu-

1
এবং তারপরে আপনি কীভাবে সম্পাদকের কাছে ফিরে যাবেন: শেল?
ভ্যাটো

@ ভ্যাটো: ফিরে যেতে, আপনি টাইপ করতে পারেন: প্রস্থান করুন
রমন কাঠপালিয়া

12

আমি ctrl+zভিআই ঘুমানোর জন্য ব্যবহার করি, শেলটিতে আমার যা প্রয়োজন তা চালাই, তারপরে fgvi শুরু করতে। আপনার প্রশ্নের সঠিক উত্তর নয়, তবে আমি এটি কাজ করার খুব দ্রুত উপায় বলে মনে করি।

আপনি যদি ভুলে যান না যে আপনার ব্যাকগ্রাউন্ডে vi আছে (আপনি যখন ব্যস্ত ctrl+dথাকবেন তখন এটি ঘটতে পারে), আপনি যখন শেলটি ব্যবহার করে লগ আউট করার চেষ্টা করবেন তখন আপনাকে সতর্ক করা হবে যে আপনার ব্যাকগ্রাউন্ড কাজ চলছে, এবং আপনি সেগুলি বন্ধ করতে পারেন, অথবা লগ আউট করতে আবার সিটিআরএল + ডি চাপুন। এছাড়াও, আপনি যদি একই ফাইলটি aআবারও খোলার চেষ্টা করেন তবে আপনি পুনরুদ্ধারের সতর্কতা পান, তাই আপনি বাতিল করতে চাপতে পারেন, এবং vi এ ফিরে যেতে fg চালাতে পারেন।


1
আপনি যদি কমান্ড লাইনে যা করছেন তাতে ধরা পড়ে এবং আপনি ভিমটি পটভূমি রেখেছেন তা ভুলে গেলে এটি স্টিকি পেতে পারে।
এলিয়ট বল

1
হ্যাঁ, এটা সম্ভব, আমি নিজেই করেছি। আমার জন্য শেল কনস্ট্যান্টি রাখা এটি মূল্যবান। আপনার মন্তব্যটি
আমলে

1
আমি মনে করি আপনি gnu স্ক্রিন ব্যবহার করা ভাল হবে।
ব্যবহারকারী 606723

1
আমি tmux নিজেই ব্যবহার করি ... তবে গতির জন্য, এবং যদি tmux বা স্ক্রিন ছাড়া কোনও সার্ভারে লগ ইন করা হয় তবে এটি কার্যকর
Rqomey

11

যেহেতু আপনি "স্টাডআউট পান" উল্লেখ করেছেন, আপনি খেয়াল রাখতে পারেন তা নোট করুন

:r! command

এবং কমান্ডের আউটপুট ফাইল যুক্ত করা হবে, বা

:<range>!command

কমান্ডের মাধ্যমে পরিসরের বিষয়বস্তু ফিল্টার করার জন্য [যেমন :1,$!wc]


:%!commandদেখতে বেশ দরকারী
এলিওট বল

আমি প্রায়শই এটি লাইনগুলি বাছাই করার জন্য ব্যবহার করি [যেমন :.,+20 !sort]
ওয়াল্টার এ

5

আমার পছন্দের প্রতিমাটি হ'ল

!!command

যা সংক্ষিপ্ত

:.!command

যা কমান্ডের মাধ্যমে বর্তমান লাইনটি পাইপ করে এবং আউটপুটটিকে ফাইলে সন্নিবেশ করে। আমার পক্ষে সর্বাধিক সাধারণ বিষয় হ'ল কমান্ডটি ভিআই দিয়ে চালানো এবং চালানো:

!!sh

অথবা

!<motion>command

যেমন (উদাহরণস্বরূপ)

!apsh

শেল মাধ্যমে বর্তমান অনুচ্ছেদ পুরো চালাতে।


2
!}অনুচ্ছেদের শুরুতে আপনার অবস্থানের জন্য নোট , চেষ্টা করুন !ap। (আমি জানি না এটি প্রতিটি vi বা কেবল vim এ আছে)
র্যান্ডম 832

4

কোলন এবং বিস্ময়কর বিন্দু ব্যবহার করে আপনি শেল পাথ এবং শেল স্ক্রিপ্টগুলিতে যে কোনও কমান্ড চালাতে পারেন, মনে রাখবেন যে কমান্ডটি vi / vim প্রোগ্রামটি চালাচ্ছে এবং তার পরিবেশ ব্যবহার করে ব্যবহারকারীর অধীনে চলে।

:!<command>

যেহেতু vi চালিত হওয়ার সময় কার্যকর পরিবেশ কার্যকর হয়েছিল তাই এটি প্যারেন্ট কমান্ডে একই পথ ব্যবহার করে। মনে রাখবেন যে কয়েকটি শাঁস প্রোগ্রামগুলিতে একটি ক্যাশে রাখে এবং vi এই ক্যাশে (এটি যে শেলটি ব্যবহার করে এবং এটির সংস্করণ নির্ভর করে) এর সাথে কাজ করতে পারে না, সুতরাং আপনার আরও কিছু ক্ষেত্রে ভুল বাইনারি চালিয়ে যেতে পারেন একই নামের এক বাইনারি চেয়ে।


4

আপনি কমান্ডের আউটপুট টাইপ করে দেখতে পাবেন, উদাহরণস্বরূপ, :!ls -lhকমান্ড মোডে।

আপনি যে ফাইলটি সম্পাদনা করছেন তাতে কমান্ডের আউটপুট sertোকাতে চাইলে কেবল একটি যুক্ত করুন r। উদাহরণস্বরূপ :r!which perl,।


1

!স্পষ্টতই ব্যবহার করা সঠিক উত্তর, তবে আপনি যদি ঘন ঘন পিছন পিছনে স্যুইচ করেন তবে স্ক্রিন বা টিএমউক্সের মতো কিছুও সহায়ক হতে পারে।


0

আমার .vimrc এ এটি আছে। কিছুক্ষণ আগে স্ট্যাক ওভারফ্লোতে পাওয়া গেছে:

" Executes the current line in a bash shell; syntactically similar to slimv's ,d feature
:nmap ,,d Y:!<C-R>"<C-H><CR>

0

আমি লিনাক্সে দুটি টার্মিনাল কমান্ড লাইন উইন্ডো খোলার মাধ্যমে একটিতে vi চালিয়ে অন্যটি একই সাথে অন্য কাজের জন্য উপলব্ধ হয়ে সহজেই এটি পেতে পারি।

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