এক্স মোডে ভিমটি কার্যকর যখন:
- আপনাকে ইন্টারেটিভ (স্ক্রিপ্টের অংশ হিসাবে) ফাইলগুলি (একাধিক) সম্পাদনা করার দরকার রয়েছে।
- আপনার সংযোগটি খুব ধীর গতির বা আপনার ক্রিয়াকলাপের পরে পর্দা আপডেট করা হয়নি।
- ম্যাপিং এবং সংক্ষিপ্ত বিবরণ অক্ষম করা হয়।
- সাধারণ কীগুলি যেমন সঠিকভাবে কাজ করে না Escapeবা Controlনা করে।
মূলত vi
ভিজ্যুয়াল মোডের জন্য ex
ভিম এক্স মোডটি কেবলমাত্র এমুলেশন ex
(তারা এখনও একই কোড চালায়), সুতরাং ex
vi এবং তদ্বিপরীত থেকে কমান্ড মোডে পৌঁছানো সম্ভব । এখানে দুটি মোড রয়েছে: এক্স মোড ( vim -e
) এবং উন্নত এক্স মোড যা vi সামঞ্জস্যপূর্ণ এক্স-মোড ( vim -E
) এর চেয়ে আরও উন্নত কমান্ডের জন্য অনুমতি দেয় । দেখুন: এক্স মোড এবং উন্নত এক্স মোডের মধ্যে পার্থক্য কী?
প্রাক্তন সম্পাদকদের একটি পরিবারের মূল: edit
, ex
এবং vi
। প্রাক্তন একটি দুর্দান্ত সেট ed
, যার মধ্যে সর্বাধিক উল্লেখযোগ্য এক্সটেনশন একটি ডিসপ্লে সম্পাদনা সুবিধা facility প্রাক্তন (1)
ইন্টারেক্টিভভাবে ফাইল সম্পাদনা করা সর্বাধিক সাধারণ ব্যবহার এবং এটি একইভাবে ব্যবহার করা লোকেরা sed
এবং awk
তবে তারা আরও প্রবাহমুখী - তারা কেবল ফাইলটি শুরু থেকে শেষ পর্যন্ত পড়েন (তারা একাধিক লাইনের সাথে কাজ করার জন্য নকশাকৃত নয়) ) vim
বাফারমুখী হওয়ার সময় - আপনি নিজের পছন্দ মতো ফাইলটিতে এগিয়ে এবং পিছনে যেতে পারেন যা এটিকে এত শক্তিশালী করে তোলে।
মূলত:
sed
একটি হল এস tream ইডি itor, না একটি ফাইল এডিটর।
তবুও, ফাইলগুলি সম্পাদনা করার চেষ্টা করার জন্য লোকেরা এটির অপব্যবহার করছে বলে মনে হয় এবং সত্যটি হ'ল এটি ফাইল সম্পাদনা করে না। দ্বিতীয়ত এর বিকল্পগুলি যেমন স্থান ( -i
) এর মান হ'ল অ-মানক ফ্রিবিএসডি এক্সটেনশন এবং অন্যান্য অপারেটিং সিস্টেমে উপলব্ধ নাও হতে পারে। সুতরাং আপনি যদি অপ্রিয়যোগ্য কোড এড়াতে চান, I / O ওভারহেড এবং খারাপ পার্শ্ব প্রতিক্রিয়া (যেমন সিমলিংকগুলি ধ্বংস করা) আপনার ব্যবহার করা উচিত ex
যা মানক ইউএনএক্স কমান্ড-ভিত্তিক সম্পাদক (বরাবর ed
) বাশফাকের প্রশ্ন ।
প্রাক্তন মোডে আমি দরকারী অন্যান্য জিনিসগুলি এটি খেলার মাঠ হিসাবে ( python
কনসোলের অনুরূপ ) হিসাবে ব্যবহার করা হয় যেখানে আপনি একাধিক কমান্ড প্রয়োগ করতে পারেন নিয়মিত অভিব্যক্তিগুলি কাজ / ডিবাগিং, ভিআইএম কনফিগারেশন পরীক্ষা করা, বাহ্যিক আদেশগুলি কার্যকর করা বা রেজিস্টারগুলির সাথে কাজ করা ইত্যাদি can ।
উদাহরণ স্বরূপ:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
যা সাধারণ মোডের চেয়ে প্রাক্তন মোডে আরও সহজ (যেখানে আপনি কেবলমাত্র আপনার শেষ আদেশটি দেখতে পাবেন)।
ব্যবহারিক ব্যবহার
আমার মধ্যে নিম্নলিখিত এলিয়াসগুলি রয়েছে .bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
দ্রষ্টব্য: ব্যবহার bufdo
করা ex
POSIX- অনুবর্তী পদ্ধতি নয় ( ম্যানুয়াল অনুসারে ), সুতরাং এর পরিবর্তে আপনি এটি ব্যবহার করার বিষয়ে বিবেচনা করতে পারেন find
। !
সংরক্ষণ (অন্যথায় সতর্কীকরণ উৎপন্ন হয়) ছাড়া বাফার সুইচিং বাধ্য করতে ব্যবহৃত হয়।
আমি প্রথমটি আমার সমস্ত উত্স ফাইলগুলিতে ট্রেলিং স্পেসগুলি ছাঁটাই করতে ব্যবহার করছি eg
trim **/*.php
দ্বিতীয়টি সমস্ত ট্যাবকে স্পেসে রূপান্তর করে (পুনরাবৃত্তভাবে), যেমন:
retab **/*.php
আমার জন্য ব্যবহার retab
করা যথেষ্ট, তবে এখানে বর্ণিত কিছু ডাউনসাইড রয়েছে । -V
ভারবোসিটি আউটপুট বৃদ্ধির জন্য অতিরিক্ত যুক্ত করুন ।
নোট করুন যে উপরের উদাহরণগুলি zsh / bash4 গ্লোববিং ( **
) ব্যবহার করে , সুতরাং আপনার শেলটি এটি সমর্থন করে এবং এটি সক্ষম হয়েছে তা নিশ্চিত করুন।
আরও ব্যবহারিক উদাহরণের জন্য (যেমন এইচটিএমএল ফাইলগুলি পার্স করার মতো) পরীক্ষা করুন:
প্রাক্তন মোড সম্পর্কে আরও জানুন এখানে:
Q
এবংq:
বেশ আলাদা। আপনি কেবল ডানদিকেই উল্লেখ করছেনQ
?