আমি কীভাবে একবারে একাধিক ট্যাব খুলতে পারি?


14

যদি আমি ব্যবহার করি:

:tabedit file1 file2

আমি পাই:

E172: Only one file name allowed

:tabeditএকাধিক ফাইলের নাম সহ কোনও উপায় আছে কি ? বা একসাথে একাধিক ট্যাব খোলার অন্য উপায়?



হ্যাঁ এটি ইতিমধ্যে এখানে ইতিমধ্যে একই উত্তর রয়েছে, এটি কী করে তার কোনও ব্যাখ্যা ছাড়াই। সুতরাং এটির সাথে লিঙ্ক করা কোনও মান যুক্ত করে কীভাবে?
মার্টিন টর্নয়েজ

আরও কিছু উত্তর আছে, এবং নতুন উত্তরগুলি সেখানে আসতে পারে। দ্বিতীয়ত এখানে সংযুক্ত / সম্পর্কিত অন্যান্য কয়েকটি রয়েছে, যাতে ব্যবহারকারীরা সম্পর্কিত দিকগুলি থেকে আরও শিখতে পারেন।
কেনারব

আমি এই এক-লাইনের শিখেছি করেছি: :args *.c | tab all। অন্য প্রশ্নটি এর চেয়ে বেশি জনপ্রিয়, সুতরাং এটির সাথে লিঙ্ক করাও ভাল।
কেনারব

উত্তর:


10

যুক্তি তালিকাটি সংশোধন করে "বিল্ট-ইন" পদ্ধতি ব্যবহার করে আমার অন্যান্য উত্তরে সমস্যা এবং জটিলতা দেওয়া হয়েছে, এটি করার জন্য আমি নিজের ছোট ফাংশন যুক্ত করেছি:

" Open multiple tabs at once
fun! OpenMultipleTabs(pattern_list)
    for p in a:pattern_list
        for c in glob(l:p, 0, 1)
            execute 'tabedit ' . l:c
        endfor
    endfor
endfun

command! -bar -bang -nargs=+ -complete=file Tabedit call OpenMultipleTabs([<f-args>])

আপনি এখন ব্যবহার করতে পারেন :Tabedit *.vim। এই ফাংশনটি সমস্ত গ্লোববিং নিদর্শনগুলিকে প্রসারিত করবে এবং :tabedit <f>প্রতিটি ফাইলের জন্য সম্পাদন করবে । আপনি যতগুলি প্যাথনাম চান তার সাথে যুক্ত করতে পারেন, উদাহরণস্বরূপ এটি সমস্ত কাজ করে:

:Tabedit file.rb
:Tabedit *.c
:Tabedit file1.py file2.py _*.py
:Tabedit /etc/hosts file{1,2}.sh

ঠিক আছে, এবং আরও ...

আমি একটু এই করা globedit.vim প্লাগইন, যা জন্য কমান্ড ধারণ করে :Edit, :Splitইত্যাদি


2
দুর্দান্ত ফাংশন এবং কমান্ড! কিছু উন্নতি: (1) এর [<f-args>]পরিবর্তে ব্যবহার করুন "<args>"- এইভাবে patternপ্যারামিটারটি একটি তালিকা (অ্যারে) হবে এবং আপনাকে স্ট্রিংটি ম্যানুয়ালি বিভক্ত করার সাথে মোকাবেলা করতে হবে না। (২) তৃতীয় যুক্তি হিসাবে glob()কোনও তালিকা ফিরিয়ে আনার জন্য অ-শূন্যকে পাস করুন । তারপরে আপনি নিজেও সেখানে ভাগ হওয়া এড়াতে পারেন can আপনি পাস করতে হবে 0দ্বিতীয় যুক্তি হিসাবে আচরণ প্রভাবিত না করেই এটা এড়িয়ে যেতে: glob(l:p, 0, 1)
tommcdo

7

আমি যতদূর জানি, এটি করার একমাত্র অন্তর্নিহিত উপায়:

:args *.vim
:tab all

প্রথমে, :argsযুক্তি তালিকাটি প্রতিস্থাপন করবে। আর্গুমেন্টের তালিকাতে আপনি ভিমটি যে ফাইলগুলির মাধ্যমে খোলেন সেগুলি তালিকাভুক্ত করে; সুতরাং এর vim file1 file2অর্থ হল যে যুক্তি তালিকায় রয়েছে file1এবং file2
আমরা রানটাইমে এটিকে সংশোধন করতে পারি এবং ভিম আর্গুমেন্ট তালিকার প্রতিটি নতুন প্রবেশের জন্য একটি বাফার খুলবে।
দেখুন :help argument-listআরও তথ্যের জন্য।

:allকমান্ড উইন্ডোর আর্গুমেন্ট তালিকার প্রতিটি এন্ট্রির জন্য, প্রর্দশিত :tabকমান্ড কমান্ড executes, এবং একটি নতুন ট্যাব যখন কমান্ড নতুন উইন্ডো খুলতে হবে দেওয়া প্রর্দশিত হবে।

আদেশ সহকারে

এই পদ্ধতিতে কিছু সতর্কতা রয়েছে।

প্রথমত, নকলগুলির জন্য কোনও চেক নেই, তাই আপনি একই বাফারের জন্য 2 বা ততোধিক ট্যাব সমাপ্ত করতে পারেন।

তবে সবচেয়ে বড় সমস্যাটি হ'ল এটি আপনার সমস্ত ট্যাবগুলির সাথে যুক্তির তালিকায় থাকা প্রতিস্থাপন করে; সুতরাং আপনি সমস্ত বিদ্যমান ট্যাব হারিয়েছেন
আপনি সামান্য ব্যবহার করে এই পাশকাটিয়ে করতে :argadd *.vimকরতে যোগ পরিবর্তে এটি প্রতিস্থাপন আর্গুমেন্ট লিস্টে; কিন্তু যেমন কমান্ড :editবা :tabeditনা না আর্গুমেন্ট তালিকার পরিবর্তন, এবং আপনাকে সেই ট্যাব নষ্ট হয়ে যাবে, যদি না আপনি তাদের যুক্তি তালিকায় যোগ (আপনি এখনও তাদের বাফার তালিকায় আছে, যদিও)। আপনি নিজের যুক্তি তালিকার সমস্ত কিছুই কোনও ট্যাবে খুলতে নাও চান, সম্ভবত আপনি অতিরিক্ত ট্যাব হিসাবে 2 টি ফাইল খুলতে চান।

আপনি সম্ভবত যুক্তি তালিকায় বর্তমানে সমস্ত খোলা ট্যাব যুক্ত করে (যা সত্যই আমি কাজ করতে পারি না) যোগ করে আপনি এটি কিছুটা আরও উন্নত করতে পারেন তবে এটি এখনও নিখুঁত। যদি কোনও ট্যাবে 2 বা ততোধিক উইন্ডোজ থাকে তবে এটি তাদের এখনও সংশোধন করবে ...


আমি ভুল হতে পারি, তবে এটি কি কোনও অতিরিক্ত ট্যাব খুলবে না (ডিফল্টরূপে ট্যাব খোলার বিষয়ে আমার প্রশ্নে দেখা গেছে)?
মারু

1
আপনি যদি এই প্রশ্নের আমার উত্তরটি উল্লেখ করছেন তবে পার্থক্যটি আমি ব্যবহার করেছি :argdo tabedit %যা প্রতিটি যুক্তির জন্য একটি নতুন ট্যাব খোলে। এক ট্যাব এবং খোলার থেকে শুরু এন নতুন স্বাভাবিকভাবেই সঙ্গে আপনি ছেড়ে দিতেন এন + 1 টি ট্যাব। :tab allএটি একটি আরও ভাল সমাধান।
tommcdo

@ টমমকডো আমি জোশ পেট্রির উত্তরের কথা বলছিলাম । আপনি তার কোনও একটি উপন্যাসের সাথে ঘটবেন না, তাই না? :)
মারু

হাহা, না। আমি নিশ্চয়ই অন্যরকম প্রশ্ন ভাবছিলাম!
tommcdo

2

:nextপরিবর্তে আপনি কমান্ড ব্যবহার করতে পারেন , উদাহরণস্বরূপ:

:n file1 file2

বা:

:n *.txt

এটি ব্যবহার হিসাবে একই মনে হয় :args *.vim? কমপক্ষে, এটি একইরকম আচরণ করে এবং এটি একইরূপে :help next_fনথিভুক্ত ...
মার্টিন টর্নয়েজ

এটি খাটো এবং সহজ এবং আপনি এটি উল্লেখ করেননি। আচরণটি একই, যেমনটি আপনি প্রশ্নে জিজ্ঞাসা করেছিলেন।
কেনারব

2

কমান্ড লাইন থেকে আপনি ব্যবহার করতে পারেন:

vim file1 ... filen -p

এবং আপনি -pএখনও ব্যবহার করতে ভুলে গেলে আপনি ব্যবহার করতে পারেন

:tab ball

বিটিডব্লিউ, ভুলে যাবেন না যে ভেরিয়েবল tabpagemax(ডিফল্ট মান 10) আপনি কতগুলি ট্যাব এইভাবে খুলতে পারবেন তা সীমাবদ্ধ করে।


0

নতুন ফাংশন না লিখে আপনি আসলে নতুন ট্যাবগুলি খুলতে এবং আপনার বর্তমান ট্যাবগুলি রাখতে পারেন ( স্ট্যাক ওভারফ্লোতে এই উত্তরটি দেখুন ):

:args file1 file2 | argdo tabe

এটি করার আগে আপনি একটি নতুন খালি ট্যাব ( :tabe) খুলতে চাইতে পারেন , কারণ বর্তমান ফাইলটি প্রথম ট্যাবটি খুলবে। এছাড়াও, একটি অতিরিক্ত খালি ট্যাবটি খোলা রেখে দেওয়া হবে ( :help argdoকেন তা বোঝার জন্য দেখুন )।


লিঙ্কে বর্ণিত এবং শেষ ট্যাবটি বন্ধ করার মতো করে আপনাকে সিনট্যাক্স হাইলাইটিং (কোনও কারণে) ঠিক করতে হবে, সুতরাং 'পূর্ণ' কমান্ডটি হবে: :tabnew | args file1 file2 | argdo tabe | tabdo syntax onপ্রম্পটটি সাফ করার জন্য আপনাকে এন্টার টিপুন এবং :closeশেষটি অপসারণ করতে টাইপ করুন ( খালি) ট্যাব ... এটি টাইপিংয়ের একটি ভয়ঙ্কর প্রচুর পরিমাণে, এবং যদি আপনি প্রচুর ট্যাব খোলেন (তবে 2 বা 3 ফাইলের জন্য, কেবলমাত্র :tabeদু'বার ব্যবহার করা দ্রুত হবে) worth
মার্টিন টর্নোইজ 26'15
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.