ভিএম-তে লোকেশন লিস্ট এবং কুইকফিক্স তালিকার মধ্যে পার্থক্য কী


94

কুইকফিক্স তালিকা এবং অবস্থানের তালিকা সম্পর্কে ডকুমেন্টেশন থেকে নিম্নলিখিতটি রয়েছে। তবে আমি নিশ্চিত না আসলে কী আলাদা। নীচের চিত্রটি লোকেশন তালিকা এবং কুইকফিক্স তালিকা থেকে একই জিনিস দেখায়। আমি কখন ভিমগ্রিপ এবং লভিমগ্রেপতে এক বা অন্য ব্যবহার করব।

In Vim the quickfix commands are used more generally to find a list of positions 
in files.For example, |:vimgrep| finds pattern matches.  You can use the positions 
in a script with the |getqflist()| function. Thus you can do a lot more than the
edit/compile/fix cycle!
...
...

                         *location-list* *E776* 
A location list is similar to a quickfix list and contains a list of positions 
in files.  A location list is associated with a window and each window can have 
a separate location list.  A location list can be associated with only one window.  
The location list is independent of the quickfix list.

...

এখানে চিত্র বর্ণনা লিখুন

হালনাগাদ

আমি এখান থেকে নিম্নলিখিত খুঁজে পেয়েছি ।

These commands all fill a list with the results of their search. "grep" and 
"vimgrep" fill the "quickfix list", which can be opened with :cw or :copen, 
and is a list shared between ALL windows. "lgrep" and "lvimgrep" fill the 
"location list," which is local to the current window, and can be opened 
with :lw or :lopen. Both of these lists can be used to instantly jump to 
the matching line in whatever file it occurs in.

সুতরাং পার্থক্য হ'ল কুইকফিক্স তালিকার জন্য সমস্ত উইন্ডো এবং লোকেশন তালিকার স্থানীয় উইন্ডো। তবে আমি অন্য যে কোনও উইন্ডো থেকে অবস্থানের তালিকাটি খুলতে পারি। তাহলে কি পার্থক্য ??

উত্তর:


110

অবস্থানের তালিকাটি বর্তমান উইন্ডোতে স্থানীয় তাই আপনার উইন্ডো হিসাবে অনেকগুলি অবস্থানের তালিকা থাকতে পারে: 30 উইন্ডো? কোনও সমস্যা নেই, এখানে আপনার 30 সমবর্তী অবস্থানের তালিকা রয়েছে।

কুইকফিক্স তালিকাটি বিশ্বব্যাপী তাই আপনার একসাথে একাধিক উপলব্ধ থাকতে পারে না। কমান্ড রয়েছে যা আপনাকে পূর্বের একটি দিয়ে বর্তমান কুইকফিক্স তালিকাটি প্রতিস্থাপন করতে দেয় তবে আপনার দুটি সমবর্তী কুইকফিক্স তালিকা থাকতে পারে না।

লোকেশন / কুইকফিক্স "তালিকাগুলি" (ডেটা স্ট্রাকচার) সাথে লোকেশন / কুইকফিক্স "উইন্ডোজ" (সেই তথ্যগুলির কাঠামোগুলি প্রদর্শনকারী উইন্ডোজ) গুলিয়ে ফেলবেন না। "উইন্ডোজ" এর একই আচরণ রয়েছে তবে "তালিকা" থাকে না। পার্থক্যটি গুরুত্বপূর্ণ কারণ এই উইন্ডোগুলি কৃতজ্ঞতার সাথে এই তালিকাগুলির সাথে ইন্টারেক্ট করার একমাত্র উপায় নয়: অনেকগুলি কমান্ড রয়েছে যা আমাদের সেই তালিকাগুলির সাথে সম্পর্কিত উইন্ডো না খোলার অনুমতি দেয় এবং সেই তালিকাগুলির মধ্যে পার্থক্য না জেনে সেই আদেশগুলি দক্ষতার সাথে ব্যবহারের মূল চাবিকাঠি ।

হাতের উপর সচিত্র উদাহরণ:

im vim -O foo.txt bar.txt

  1. কি :lvim foo %মধ্যে foo.txtসমন্বিত উইন্ডোটি জন্য একটি অবস্থান তালিকা তৈরি করতে foo.txt

  2. কি :lneকয়েক ঝাঁপ কয়েক বার foofoo.txt

  3. ফোকাস করুন bar.txtএবং করুন :lne। কি ঘটেছে?

  4. এখন, কি করতে :lvim bar %bar.txtধারণকারী উইন্ডোর একটি অবস্থান তালিকা তৈরি করতে bar.txt

  5. কি :lneকয়েক বার। আপনি কোন ম্যাচে ঝাঁপ দাও? কোন বাফারে? কোন উইন্ডোতে?

  6. অন্য উইন্ডোতে স্যুইচ করুন এবং :lneকয়েকবার করুন। কি ঘটেছে?

  7. আবার স্যুইচ করুন bar.txt। কি করে :lne?

  8. এখন, কি করতে :vim bar %মধ্যে bar.txtএকটি quickfix তালিকা তৈরি করুন।

  9. কি :cnকয়েক ঝাঁপ কয়েক বার barbar.txt

  10. এখন, ফোকাস foo.txt, কি করে :cn?

আপনি যে অবস্থানটিতে ঝাঁপিয়ে পড়েছেন সেটি আপনি যে উইন্ডোটিতে রয়েছেন তার :lneউপর নির্ভর করে তবে আপনি যে ত্রুটিটি দিয়ে :cnচলেছেন তা সর্বদা একই থাকে (যতক্ষণ না আপনি বর্তমান কুইকফিক্স তালিকাকে অন্য একটিতে প্রতিস্থাপন করেন)।

উভয় তালিকার অপেক্ষাকৃত স্পষ্ট ভূমিকা রয়েছে আইএমও: কুইকফিক্স তালিকা (এবং এইভাবে কুইকফিক্স উইন্ডো) সাধারণত এবং বেশ যুক্তিযুক্তভাবে ত্রুটিগুলির প্রতি উত্সর্গীকৃত হয় এবং অবস্থানের তালিকাটি অনুসন্ধানের জন্য উপযুক্ত (আমার কাছে) মনে হয়।


10
আরও সাধারণভাবে: যখন আপনার সন্ধান বা সংকলনটিতে একাধিক ফাইল জড়িত থাকে তখন কুইকফিক্স তালিকাটি সর্বোত্তম list
ট্রেবর অভদ্র

4
বিশেষত, আপনি যদি (যেমন ) -q errors.txtমধ্যে সংকলন ত্রুটি স্থাপনের পরে , ভিএম চালু করেন তবে ভিএম সংকলন ত্রুটির তালিকা থেকে কুইকফিক্স তালিকাটি তৈরি করবে, যা খুব সহজ। errors.txtgcc -Wall *.c >errors.txt 2>&1
কেভিন

@ ট্রেবাররুড, আমার মনে হয় না। উদাহরণস্বরূপ, ধরুন আপনি দুই উল্লম্বভাবে বিভক্ত জানালা আছে (যেমন উপরে উত্তরে দেখানো হয়েছে) দিন এবং একাধিক ফাইল (অনুসন্ধান করতে চান foo1.txt, foo2.txtজন্য, ...) fooবাম উইন্ডো এবং একাধিক ফাইল (ইন bar1.txt, bar2.txtজন্য, ...) barঅধিকার উইন্ডোতে। আপনি :lv foo foo*বাম উইন্ডো এবং তারপরে :lv bar bar*ডান উইন্ডোতে চালাতে পারেন । তারপরে বাম উইন্ডোতে :lneপরবর্তী ম্যাচটি প্রদর্শিত হবে foo, নয় bar। এটি কারণ :lvআপনি যে উইন্ডোটি চালিত করেন তার অবস্থানের তালিকাটি ব্যবহার করে, তাই প্রতিটি অনুসন্ধানের নিজস্ব অবস্থানের তালিকা রয়েছে।
ma11 শেই 28
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.