ওয়াইল্ডকার্ডের এক্সপ্রেশনটির সাথে মিলে একাধিক ফাইল কীভাবে খুলবেন?


10

আমি গ্লোব এক্সপ্রেশনের সাথে মেলে বেশ কয়েকটি ফাইল সম্পাদনা করতে চাই। উদাহরণস্বরূপ, শিশু ডিরেক্টরিতে সমস্ত গিট কনফিগারেশন ফাইল সম্পাদনা করতে, আমি শেলটিতে এটি করতে পারি:

vim */.git/config

ভিম :কমান্ড লাইনে, আমি :find */.git/configঅনুরূপ কিছু করার প্রত্যাশা করেছি (অর্থাত, গ্লোব এক্সপ্রেশনটির সাথে মিলে সমস্ত ফাইলগুলি খুলুন), তবে পরিবর্তে এটি অভিযোগ করে E77: Too many file names

ওয়াইল্ডকার্ড / গ্লোব এক্সপ্রেশন (যা কোনও ফাংশন লেখার সাথে জড়িত না) মিলছে একাধিক ফাইল খুলতে কি ভিম কমান্ড বা ওয়ান-লাইনার রয়েছে?

উত্তর:


8

আপনি ব্যবহার করতে পারেন :args {glob}। আপনার গ্লোবগুলিতে, **ডিরেক্টরিগুলি পুনরাবৃত্তভাবে অনুসরণ করবে।

এটি আর্গুমেন্টের তালিকাটি পপুলেট করবে, এটি একই তালিকা যা পপুলেটে যায় যখন আপনি একটি বা একাধিক ফাইলের নাম দিয়ে আর্গুমেন্ট হিসাবে শুরু করবেন।

একবার আপনার যুক্তি তালিকাটি পপুলিশ হয়ে গেলে আপনি এর মাধ্যমে :nextএবং ব্যবহার করে নেভিগেট করতে পারেন :previous। আপনি :firstএবং :lastকমান্ডগুলির সাহায্যে প্রথম এবং শেষ আইটেমটিতেও যেতে পারেন ।


1
দুর্দান্ত :) :args */.git/configআসলে বাফার তালিকাটিও জনপ্রিয় করে তোলে তাই :bnextকাজ করে too এটা কি অদ্ভুত বলে মনে হচ্ছে? (ভিম 7.4.52, এবং নিওভিম)
জাস্টিন এম কেয়েস

1
অন্যদের কাছে একটি অনুস্মারক, github.com/tpope/vim-unimpaired ইনস্টল করা থাকলে তালিকাটি]a চক্র করে । :args
জাস্টিন এম কেয়েস

এছাড়াও :argadd file*করতে পারেন।
কেনারব

গ্লোব নিদর্শন ( **) ব্যবহার করতে , আপনাকে globstarসেট করতে হবে , দেখুন: শেল গ্লোব্বিংয়ের সাহায্যে সমস্ত নেস্টেড ডিরেক্টরিতে সমস্ত ফাইল মেলে
কেনারব

@ জাস্টিনএম.কিজেস বাফার তালিকাটি আরোগুলি তালিকার একটি সুপারসেট, তাই এটি প্রত্যাশিত।
জামেসান

3

পৃথক ট্যাবে ম্যাচের ফাইলগুলি খুলতে ...

:n */.git/config | tab all

ব্যাখ্যা: :n ( :next) সমস্ত ম্যাচের জন্য পরবর্তী ফাইলের তালিকা সেট করে। tab allনতুন ফাইলগুলিতে পরবর্তী ফাইল তালিকার সমস্ত ফাইল খোলে।

… বা…

for f in glob("*.py", 0, 1) | exe "tabe" f | endfor

ব্যাখ্যা: ইন glob(…), 0 এর অর্থ সমস্ত মিলে যাওয়া ফাইল অন্তর্ভুক্ত করা উচিত, এমনকি যদি সেগুলি suffixesবা wildignorecaseসেটিংসের কারণে তা অন্যথায় উপেক্ষা করা হয় । 1 টি মানে স্ট্রিংয়ের পরিবর্তে একটি তালিকা ফিরে আসা। exe "tabe" fএর একটি সংক্ষিপ্ত রূপ execute "tabedit" fএবং এর অর্থ fএকটি নতুন ট্যাবে ভেরিয়েবল দ্বারা নির্দিষ্ট ফাইলটি খুলতে হবে ।


1
দেখে মনে হচ্ছে :n */.git/config | bufferকাজের মতো ।
মতিন উলহাক

2

Vim: কমান্ড লাইনে, আমি :find */.git/configঅনুরূপ কিছু করার প্রত্যাশা করেছি (অর্থাত, গ্লোব এক্সপ্রেশনটির সাথে মিলে সমস্ত ফাইলগুলি খুলুন), তবে পরিবর্তে এটি অভিযোগ করে E77: Too many file names

ডকুমেন্টেশন পড়ার আগে কিছু আশা করবেন না।

টমের উত্তর ছাড়াও, আপনি সরাসরি :nextবিকল্প হিসাবে ব্যবহার করতে পারেন :args


0

vim */.git/configঅবশ্যই ফাইলগুলি খোলার কাজ করা উচিত। যদি এটি না হয় তবে আপনার ভিমটি 7.4 এ উন্নীত করা উচিত (পূর্ববর্তী সংস্করণটি আরও বগি ছিল)।

বিকল্পভাবে নিম্নলিখিতগুলির মধ্যে একটির (চেষ্টা করুন সম্পাদকের মধ্যে):

:n `find .git/ -name config`
:args `find . -name config`

আপনি আমার প্রশ্নটি মনোযোগ দিয়ে পড়েন নি। এবং, গৃহীত উত্তর ইতিমধ্যে উল্লেখ করেছে :args
জাস্টিন এম কেয়েস

@ জাস্টিনএম.কিজ আপনার পয়েন্টের জন্য ধন্যবাদ। ওয়াইল্ডকার্ডটি ডিফল্টরূপে কাজ করা উচিত এবং এটিই একমাত্র উত্তর যা বলে যে এটি 7.4 এ কাজ করা উচিত (যেমনটি আপগ্রেডের আগে আমার ঠিক একই ত্রুটি ছিল)। ব্যবহার argsকরা কেবলমাত্র কর্মক্ষেত্রের, তবে আরও এটি আপনাকে দেখায় যে কীভাবে এটির মধ্যে আরও ব্যবহারকারীরা আরও জটিল সমাধানের জন্য ব্যবহার করতে চান find, যেমন এইটির মতো এটি আরও জটিল সমাধানের জন্য কীভাবে ব্যবহার করতে হয় । সুতরাং আমি মনে করি এটি আপনার প্রশ্নের কিছু অতিরিক্ত মান দেয়। সুতরাং আমি আশা করি আপনার সাথে এটি ভাল আছে।
কেনারব

আমার সাথে কখনও সমস্যা হয়নি vim */foo, এবং ভিম সংস্করণের সাথে সম্পর্কিত হতে পারে এমন কোনও উপায় নেই, কারণ এটি শেলের বৈশিষ্ট্য।
জাস্টিন এম কেয়েস

0

স্পষ্টতই, তবে উপরে তালিকাভুক্ত নয় - উদাহরণস্বরূপ সমস্ত এসকিএল ফাইলগুলি তাদের নামে ক্রিয়েট টেবিল স্ট্রিংযুক্ত সন্ধান করুন

:args **/*create_table*sql

এবং তাদের পরীক্ষা করুন

:ls

এবং প্রথমটি খুলুন

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