আপনার মতো আমারও ঠিক একই ইচ্ছা ছিল: আমি স্বাভাবিক ভিএম কমান্ড লিখতে চেয়েছিলাম এবং সেগুলি পাইপলাইন প্রবাহে সম্পাদনা করতে চাই। আমি ডিফল্ট ভিআইএম অপশন দ্বারা সরবরাহিত এইভাবে স্বাভাবিক ভিএম ব্যবহার করতে অসুবিধা দেখে হতাশ হয়েছি।
অতএব, আমি এটি করার জন্য ভিমে একটি ছোট মোড়ক লিখেছি: https://github.com/MilesCranmer/vim-stream/ । এটি বলা হয় vims
।
মোড়কের কেন্দ্রস্থল হ'ল নিম্নলিখিত আদেশ:
vim - -nes "${vim_cmds[@]}" -c ':q!' | tail -n +2
এটি ব্যবহার করে, আমি যে কমান্ড জেনারেশন করি তা দিয়ে এটি বেশ সংক্ষিপ্ত হতে চলেছে, এবং ভিএম মডেল সম্পাদক হওয়ায় আমি vims
একটি মডেল স্ট্রিম সম্পাদক তৈরি করেছি । পাইপলাইন-সম্পাদনা মানসিকতার সাথে উপযোগী এমন তিনটি প্রধান পদ্ধতি রয়েছে:
[-t|--turn-off-mode] - (Default mode)
Every string is a vim command line, e.g., '%g/foo/d' deletes
all lines with foo.
[-e|--exe-mode] - Translated to '%g/$1/exe "norm $2"', see examples below
[-s|--simple-mode] - Like exe-mode, but runs on 1st line only
এটা দেখ:
$ echo "Hello World" | vims -s "ea Beautiful"
Hello Beautiful World
সুতরাং, e
এর শেষে যায় Hello
, তারপরে a
সংযোজন শুরু হয়।
এক্সাই-মোডে কিছু ফ্যানসিয়ার, এতে থাকা লাইনগুলিকে মন্তব্য করতে my_bad_var
এবং পূর্ববর্তী লাইনটি মুছতে।
cat my_script.cpp | vims -e 'my_bad_var' 'I//\<esc>kdd'
কোনটি অনুবাদ করে vims '%g/my_bad_var/exe "norm I//\<esc>kdd"'
- I
লাইনের শুরুতে সন্নিবেশ করা কমান্ড //
হওয়া এবং মন্তব্য ক্রম হওয়া।
\<esc>kdd
এস্কেপ কীটি পুশ করে, একটি লাইন উপরে নিয়ে যায়, তারপরে লাইনটি মুছে দেয়।
রেপোতে আমার কাছে মোট 11 টি উদাহরণ রয়েছে, আমি আপনাকে সেগুলি পরীক্ষা করতে উত্সাহিত করি। আবার, এটি ভিমের শীর্ষে চলছে, এটি স্ট্রিম ইনপুটটির জন্য ভিমকে আরও বেশি শেড বানানোর একটি উপায় (তবে আপনার সমস্ত প্রিয় ভিম ম্যাক্রো সংরক্ষণ করে!)
|
চরিত্র পাইপ অন্য এক কমান্ডের আউটপুট।wea-this
কোন আদেশ নয়। পাইপিং আপনি যা করতে চাইছেন তা অর্জন করতে ব্যবহার করা যাবে না; এটি কীবোর্ড নয়, বাম হাতের অ্যাপ্লিকেশন হিসাবে ভিমের স্টিডিনকে সৃষ্টি করবে। আপনি তেজ মধ্যে একটি বাফার মধ্যে stdin করতে চান, এটা ফাইলের নাম জন্য একটি বিয়োগ দিয়ে শুরু:echo Hello, world! | vim -
।