টিউটোরিয়াল উল্লেখ করেছেন যে প্রাক্তন মোড ব্যাচ প্রসেসিং জন্য। যেহেতু এটি আমার কাছে একটি সরঞ্জামের পরিবর্তে উপদ্রব, তাই আমি কিছু ব্যবহারিক উদাহরণ দেখতে চাই। কে ব্যবহার করে? কেন?
ব্যাচ প্রসেসিংয়ের জন্য এক্স-মোড কী?
টিউটোরিয়াল উল্লেখ করেছেন যে প্রাক্তন মোড ব্যাচ প্রসেসিং জন্য। যেহেতু এটি আমার কাছে একটি সরঞ্জামের পরিবর্তে উপদ্রব, তাই আমি কিছু ব্যবহারিক উদাহরণ দেখতে চাই। কে ব্যবহার করে? কেন?
ব্যাচ প্রসেসিংয়ের জন্য এক্স-মোড কী?
উত্তর:
এক্স মোডে ভিম (এটিও পরিচিত ex
) যখন দরকারী তখন:
ফাইল সম্পাদনা করা অ ইন্টারেক্টিভ হয় সবচেয়ে সাধারণ ব্যবহার এবং হিসাবে অনুরূপ ভাবে এটি ব্যবহার মানুষ sed
এবং awk
, তবে সেগুলি করছি আরো ওরিয়েন্টেড Stream - তারা শুধুমাত্র যখন প্রথম থেকে শেষ পর্যন্ত এগিয়ে ফাইলটি পড়ার vim
হয় ওরিয়েন্টেড বাফার - আপনি এগিয়ে এবং অনুন্নত স্থানান্তর করতে পারেন আপনার পছন্দ মতো ফাইলটিতে দ্বিতীয়ত, ভিএম এর নিয়মিত প্রকাশগুলি ও ডাব্লু এর সিডের এক্সপ্রেশনগুলির চেয়ে বেশি শক্তিশালী (এগুলি একাধিক লাইনের সাথে কাজ করার জন্য নকশাকৃত নয়) - উদাহরণস্বরূপ ভিম বিভিন্ন লাইনের সাথে মেলাতে পারে এবং শূন্য ম্যাচগুলিকে সমর্থন করে।
প্রাক্তন সম্পাদকও (vi এর সরাসরি পূর্বসূর) এবং ভিমে - প্রাক্তন মোড এমুলেট করে ex
(তারা এখনও একই কোড চালায়), সুতরাং ex
vi এবং তদ্বিপরীত থেকে কমান্ড মোডে পৌঁছানো সম্ভব । এখানে প্রাক্তন মোড ( vim -e
) এবং উন্নত এক্স মোড রয়েছে যা vi সামঞ্জস্যপূর্ণ প্রাক্তন মোড ( vim -E
) এর চেয়ে আরও উন্নত কমান্ডের জন্য অনুমতি দেয় । দেখুন: এক্স মোড এবং উন্নত এক্স মোডের মধ্যে পার্থক্য কী?
প্রাক্তন সম্পাদকের পরিবারের মূল: সম্পাদনা, প্রাক্তন এবং vi। প্রাক্তন এডের একটি সুপার সেট, সবচেয়ে উল্লেখযোগ্য এক্সটেনশনটি প্রদর্শন সম্পাদনা সুবিধা। প্রাক্তন (1)
এখানে পরিবর্তন সহজ উদাহরণ 127
থেকে 128
আপনার এর hosts
ফাইল এবং আউটপুট মুদ্রণ:
ex -s +%s/127/128/g +%p +q! /etc/hosts
সমান:
sed s/127/128/g /etc/hosts
আরও উন্নত সমাধানের জন্য আপনার কাছে ভিএম কমান্ডের সাথে ফাইল থাকতে পারে এবং এটি I / O পুনঃনির্দেশের আরও ক্লাসিক পদ্ধতির মাধ্যমে ব্যবহার করতে পারেন:
echo :%s/127/128/g > cmds.vim
echo :%print >> cmds.vim
echo :%quit! >> cmds.vim
ex -s /etc/hosts < cmds.vim # The same as: vim -s cmds.vim /etc/hosts
কিছু কাজ সম্পাদনের জন্য আপনি ভিআইএম প্লাগইন ব্যবহার করতে পারেন।
উদাহরণস্বরূপ, নিম্নলিখিত ওয়ান-লাইনারটি আপনার উত্স কোড ফাইলটিকে স্ট্যান্ডার্ড প্লাগইনগুলির একটি ব্যবহার করে এইচটিএমএল রূপান্তর করবে:
ex -s '+let g:html_no_progress=1' '+syntax on' '+set ft=c' '+runtime syntax/2html.vim' -cwqa my_code.c
এটি আপনার কোড (কোনও সমর্থিত ভাষায় লিখিত) থেকে এইচটিএমএল ফাইল তৈরি করবে (যা কোনও সমর্থিত ভাষায় লিখিত) যা মুদ্রণের জন্য বা আপনার ওয়েবসাইটে প্রকাশের জন্য প্রস্তুত।
বা RPM স্পেসিফিকেশন থেকে কিছু বাস্তব লাইভ উদাহরণ :
vim -E -s Makefile <<-EOF
:%substitute/CFLAGS = -g$/CFLAGS =-fPIC -DPIC -g/
:%substitute/CFLAGS =$/CFLAGS =-fPIC -DPIC/
:%substitute/ADAFLAGS =$/ADAFLAGS =-fPIC -DPIC/
:update
:quit
EOF
নিম্নলিখিত স্ক্রিপ্টটি উদাহরণ সাইটের এইচটিএমএল ডাউনলোড করে এটির এলোমেলো সংখ্যার সাথে স্বয়ংক্রিয়ভাবে উত্পাদিত 20x20 টেবিল দ্বারা এর দেহটি প্রতিস্থাপন করে একটি নতুন এইচটিএমএল ফাইল তৈরি করবে:
" table.vim
%!curl -s example.com
let @t='<table>'.repeat('<tr>'.repeat('<td>_</td>',20).'</tr>',20).'</table>'
/<body
norm!vitd"tP
%s/_/\=system('echo $RANDOM')/g
wq
ব্যবহার:
ex -s table.html < table.vim
এটি কার্ল ইনস্টল থাকা সিস্টেমগুলির মতো * নিক্সে কাজ করবে।
-V
ক্রিয়াকলাপটি দেখতে যোগ করুন ।
আরও উদাহরণ:
আরো দেখুন:
প্রাক্তন মোড বেশিরভাগ ফাইলের ক্ষেত্রে একই ক্রিয়া সম্পাদনের জন্য।
বলুন যে আপনার সাথে 25 .html ফাইল রয়েছে:
<a href="/superuser//home.html"> ...
এগুলির প্রত্যেককেই খোলার পরিবর্তে আপনি এগুলি সবগুলিতে পরিবর্তন করতে এক্স-মোড ব্যবহার করতে পারেন index.html
:
vim -E -s bob.html <<-EOF
:%substitute/home.html/index.html/
:update
:quit
EOF
for file in *.html; do vim -es -c '%s/home\.html/index.html/g' -c wq "$file"; done
।
সাম্প্রতিক .3.৩ হিসাবে অবিচ্ছিন্ন সমর্থন হিসাবে, প্রাক্তন মোড এবং ভিএম ব্যাচ প্রসেসিংয়ের অন্যান্য রূপগুলি অন্যান্য নন-ভিআইএম পদ্ধতির চেয়ে উচ্চতর, যেহেতু এটি পূর্ববর্তী ইতিহাসকে আবদ্ধ করবে না।
যোগ করা: 'পার্সেন্টেন্ট পূর্বাবস্থায়' সক্ষম করা থাকলে, ভিম সম্পাদনা সেশন জুড়ে, পূর্ববর্তী ইতিহাসে কোনও ফাইলের (একটি সীমা পর্যন্ত) সমস্ত পরিবর্তন রাখে। যদি কোনও বাহ্যিক প্রোগ্রাম দ্বারা ফাইলটি সম্পাদনা করা হয়, চেকসামের সাহায্যে এটি পরিবর্তিত হয়েছে তা সনাক্ত করার সময় ভিম পূর্বাবস্থায় ফিরিয়ে আনবে history vim -E আপনাকে একটি ফাইল ব্যাচ-সম্পাদনা করার অনুমতি দেবে এবং সম্পাদনাটি পূর্বাবস্থায় থাকবে।
এটি ব্যাচের প্রক্রিয়াকরণ সম্পর্কে আপনার প্রশ্নের উত্তর দেয় না, তবে প্রাক্তন-মোডটি কী তা বোঝানোর জন্য এটি অন্য উপায়। আপনি জানেন যে আপনি কীভাবে চাপছেন:
কমান্ড-লাইন মোডে গিয়ে কমান্ড লিখতে হবে? আচ্ছা প্রাক্তন মোড আপনাকে একই কমান্ডগুলি প্রবেশ করতে দেয়, আপনি কোনও কমান্ড প্রবেশের পরে ভিম এক্স মোডটি ছাড়েন না, এটি এক্স মোডে থাকে এবং আপনি অন্য কমান্ডটি প্রবেশ করতে পারেন। সুতরাং এটি একটি REPL এর মতো (পড়ুন, মূল্যায়ন করুন, মুদ্রণ করুন, লুপ) তবে মুদ্রণ ছাড়াই (সুতরাং কেবল একটি আরএল ...)। আপনি কেন পরে আবার এ জাতীয় আরএল চাইবেন তা ফিরে আসব। এজন্য এটিকে প্রাক্তন মোড বলা হয়, এটি আপনাকে প্রাক্তন কমান্ড লিখতে দেয় যা একই কমান্ড-লাইন মোডের কাজ করে, এটি আপনাকে একটি প্রাক্তন কমান্ড প্রবেশ করতে দেয়। এটি ব্যাখ্যা করার আর একটি উপায় এটি হ'ল এটি আপনাকে প্রবেশ করে এবং তত্ক্ষণাত ভিমস্ক্রিপ্ট / ভিএমএল কোডটি কার্যকর করে। ভিমস্ক্রিপ্ট / ভিমএল এমন একটি ভাষা যা আপনি ভিম প্লাগইনগুলিতে লিখতে ব্যবহার করতে পারেন your এটি আপনার ভাষাতে আপনার কনফিগার (সম্ভবত .vimrc) ফাইলটি লিখতেও ব্যবহার করুন। আপনি কমান্ড-লাইন মোড বা এক্স-মোড থেকে প্রাক্তন কমান্ডগুলি প্রবেশ করার সময় আপনি যে ভাষাটি ব্যবহার করছেন তাও এটি। সুতরাং সেই দৃষ্টিকোণ থেকে প্রাক্তন মোডটিকে একটি ভিএমএল আরইএল হিসাবে দেখা যেতে পারে। আপনি কেন একটি ভিএমএল রেল চাইবেন? একই কারণে লোকেরা অন্য ভাষার জন্য আরপিএল পছন্দ করে। কোডগুলি ডিবাগিং করতে বা কীভাবে কীভাবে কাজ হয় তা দেখার জন্য ভাষা নিয়ে পরীক্ষার জন্য তারা সত্যই সহায়ক হতে পারে, বিশেষত আপনি যদি ভিএমএলে প্লাগইন লিখছেন বা আপনার কনফিগারেশন ফাইলটিকে উচ্চতর কাস্টমাইজ করছেন (যার অর্থ সম্ভবত আপনি এসআরপি অধ্যক্ষ লঙ্ঘন করছেন এবং এটিতে বিভক্ত হওয়া উচিত) প্লাগ-ইন)।
:!python
ইত্যাদি ব্যবহার করতে পারি