ভিএম থেকে বাশ স্ক্রিপ্ট কার্যকর করুন


21

আমি বাশ স্ক্রিপ্টিংয়ের জন্য ভিএম ব্যবহার করি। জিনিসটি কখনও কখনও আমি কোনও নতুন ফাইল তৈরি করতে চাই না, এটি সম্পাদনযোগ্য করে তুলি, সম্পাদন করতে পারি এবং তারপরে এটি মুছতে পারি না। আমি বলতে চাইছি যে স্ক্রিপ্টগুলি কেবল একবার ব্যবহার করা হবে।

উদাহরণস্বরূপ আমি ভিএম খুলি এবং এটি টাইপ করি:

#!/bin/bash

ll | while read line
do
    echo $line
done

আমি এই ফাইলটি সংরক্ষণ করি নি, আমি কেবল বাশ-স্ক্রিপ্টিংকে সরল করতে vim ব্যবহার করি। আমি জানি আমি !ভিএম এর মাধ্যমে বাশ কমান্ড কার্যকর করতে পারি । তবে বাফারে যা আছে তা কার্যকর করতে হবে?


4
আপনি কি জানেন যে আপনি ভিমে বর্তমান কমান্ড-লাইনটি সম্পাদনা করতে <C-x><C-e>এবং এটিকে লেখায় কার্যকর করতে পারেন, তাই না?
রোমেনেল

আপনি যদি এই বিকল্পটি দিয়ে বাশ চালান set -o vi, আপনি Esc-vvi এ কমান্ড লাইনটি সম্পাদনা করতে আঘাত করতে পারেন । তারপরে Esc-:wqমৃত্যুদণ্ড কার্যকর করা।
রোব্লগিক

উত্তর:


35

স্ট্যাক-ওভারফ্লোতে আমি এটি সম্পর্কে একটি সুন্দর বিস্তৃত উত্তর লিখেছি । মৌলিক ধারণা যে যেহেতু লেখার কমান্ড সম্পর্কে হয় লেখার না সংরক্ষণ , আপনি আপনার বাফারে টেক্সট একটি বহিস্থিত প্রোগ্রাম যেমন পাইথন বা ব্যাশ যেমন লিখতে পারেন। আপনার ক্ষেত্রে, আপনি যেমন কিছু করতে চান:

:w !bash

অথবা

:w !sh

এই কমান্ডগুলি আক্ষরিকভাবে আপনার বাফারের পাঠ্যটি সরাসরি আপনার প্রোগ্রামে নির্দিষ্ট করে লিখুন !যা সুবিধাজনক কারণ কারণ আপনাকে কোনও ফাইল সংরক্ষণ করার দরকার নেই। অবশ্যই আপনিও এর মতো কিছু করতে পারেন:

:w | !bash %

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


বিকল্পগুলি এভাবে কোনও যুক্তি সরবরাহ করার কোনও উপায় আছে কি? আমি চেষ্টা করেছি :w !bash -a testকিন্তু "বাইনারি ফাইল চালানো যাবে না"
সেন্ট অ্যান্টারিও

@ সেন্ট অ্যান্টারিও হুম। আমি নিশ্চিত যে কোনও উপায় অবশ্যই আছে তবে আমার ব্যাশ বেশ মরিচা (আমি বেশিরভাগ উইন্ডো ব্যবহার করি)। আমি যখন খালি testফাইল সহ সাইগউইনে চেষ্টা করি তখন এটি আমার পক্ষে ভাল fine কমান্ডটি করার কথা testরয়েছে এবং এতে কী থাকতে হবে?
DJMcMayhem

আমার প্রকৃত ক্ষেত্রে প্রশংসনীয় জটিল, তাই এটি শুধু যুক্তি পাস প্রিন্ট করা যাক। BTW, আপনি কি বলতে চাইছেন কি উচিত test থাকে? testশুধুমাত্র একটি যুক্তি -a
সেন্ট অ্যান্টারিও

1
@ সেন্ট এন্টারিও ওহ, ঠিক আছে আমি দেখছি। আমি ভেবেছিলাম testএকটি ফাইল হওয়ার কথা। আমি আসলে কী করব তা নিশ্চিত নই। আপনি যদি জটিল কিছু চেষ্টা করছেন তবে এটি কেবল একটি ফাইলে সংরক্ষণ করা ভাল better এটি পৃথক প্রশ্ন হিসাবে জিজ্ঞাসা করার উপযুক্ত হতে পারে যাতে আপনি আরও বিশদ সরবরাহ করতে পারেন। এটি সম্ভবত ইউনিক্স এবং লিনাক্সের
ডিজেএমসিএমহেহম

4

পরিস্থিতি: আপনি বাশ শেলের কাজ করছেন। প্রথমে নিশ্চিত হয়ে নিন যে স্থানীয় সম্পাদনা মোডটি vi:

$ set -o vi

এখন, আপনি যখন নীচের মতো দীর্ঘ কমান্ডে নিজেকে কাজ করতে দেখেন, Esc+ চাপুন v

$ fjhwfq this is my long command

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

fjhwfq some long command
ls -l

আপনি যখন সম্পাদনা শেষ করেছেন, টাইপ করুন Esc :wqএবং আদেশ (গুলি) কার্যকর করা হবে, উদাহরণস্বরূপ:

$ fjhwfq some long command
fjhwfq some long command
bash: fjhwfq: command not found
ls -l
total 44
-rw-r--r-- 1 ropata Domain Users 24073 Nov 10 14:17 _viminfo
drwxr-xr-x 1 ropata Domain Users     0 Jul 15 13:57 bin/
-rw-r--r-- 1 ropata Domain Users   956 Nov  7 10:43 custom_env

3
যদি আপনার Escকী ছাড়া কোনও নতুন
ম্যাকবুক

1
নতুন ম্যাকবুকের Escকী নেই !? তারা কীভাবে তখন ভিম ব্যবহার করতে পারে?
হুব্রো

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