विम में लोकेशन लिस्ट और क्विकफिक्स लिस्ट में क्या अंतर है


94

निम्नलिखित क्विकफ़िक्स सूची और स्थान सूची के बारे में प्रलेखन से है। लेकिन मुझे यकीन नहीं है कि वास्तव में क्या अलग है। नीचे दी गई छवि स्थान सूची और क्विकफ़िक्स सूची से समान चीज़ें दिखाती है। जब मैं vimgrep और lvimgrep में एक या दूसरे का उपयोग करता हूं

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 समवर्ती स्थान सूचियाँ हैं।

क्विकफ़िक्स सूची वैश्विक है, इसलिए आपके पास एक समय में एक से अधिक उपलब्ध नहीं हो सकते हैं। ऐसे कमांड हैं जो आपको वर्तमान क्विकफ़िक्स सूची को पिछले एक के साथ बदलने की अनुमति देते हैं लेकिन आपके पास दो समवर्ती क्विकफ़िक्स सूची नहीं हो सकती हैं।

स्थान / क्विकफ़िक्स "सूचियों" (डेटा संरचनाओं) को स्थान / क्विकफ़िक्स "विंडो" (उन डेटा संरचनाओं की सामग्री को प्रदर्शित करने वाली खिड़कियां) के साथ भ्रमित न करें। "विंडोज़" में समान व्यवहार हैं लेकिन "सूचियाँ" नहीं हैं। यह अंतर महत्वपूर्ण है क्योंकि उन खिड़कियों को उन सूचियों के साथ बातचीत करने का एकमात्र तरीका नहीं है: कई आदेश हैं जो हमें संबंधित खिड़कियों को खोलने के बिना उन सूचियों के माध्यम से आगे बढ़ने की अनुमति देते हैं और उन सूचियों के बीच अंतर को जानना उन आदेशों का कुशलतापूर्वक उपयोग करने के लिए महत्वपूर्ण है। ।

हाथ से सचित्र उदाहरण:

$ vim -O foo.txt bar.txt

  1. क्या :lvim foo %में foo.txtकी विंडो के लिए कोई स्थान सूची बनाने के लिए foo.txt

  2. क्या :lneकुछ करने के लिए कूद करने के लिए कुछ समय fooमें foo.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कुछ करने के लिए कूद करने के लिए कुछ समय barमें bar.txt

  10. अब, ध्यान केंद्रित करें foo.txt, क्या करता :cnहै?

आप जिस स्थान से कूदते हैं वह :lneउस विंडो पर निर्भर करता है जिस पर आप हैं, लेकिन आप जिस त्रुटि के साथ कूदते हैं :cnवह हमेशा समान होती है (जब तक कि आप वर्तमान क्विकफिक्स सूची को दूसरे के साथ प्रतिस्थापित नहीं करते)।

दोनों सूचियों की अपेक्षाकृत स्पष्ट भूमिकाएँ हैं IMO: क्विकफ़िक्स लिस्ट (और इस तरह क्विकफ़िक्स विंडो) आमतौर पर और त्रुटियों के लिए काफी तार्किक रूप से समर्पित होती है और खोज के लिए स्थान सूची (मेरे लिए) उपयुक्त लगती है।


10
आम तौर पर: जब आपकी खोज या संकलन में कई फाइलें होती हैं, तो क्विकफिक्स सूची सबसे अच्छी होती है, केवल एक ही फाइल में शामिल होने पर स्थान सूची सर्वश्रेष्ठ होती है।
ट्रेबोर रूड

5
विशेष रूप से, आप के साथ vim लांच अगर -q errors.txt, में संकलन त्रुटियों डालने के बाद errors.txt(यानी gcc -Wall *.c >errors.txt 2>&1), vim संकलन त्रुटियों की सूची है, जो बहुत आसान है से QuickFix सूची बस जाएँगे।
केविन

@TreborRude, मुझे ऐसा नहीं लगता। उदाहरण के लिए, मान लीजिए कि आप दो खड़ी विभाजन खिड़कियां है (जैसा कि ऊपर जवाब में दिखाया गया है) करते हैं और एक से अधिक फ़ाइलों (खोज करना चाहते हैं foo1.txt, foo2.txtके लिए, ...) fooबाईं खिड़की और एक से अधिक फ़ाइलों (में bar1.txt, bar2.txtके लिए, ...) barसही विंडो में। आप :lv foo foo*बाईं विंडो में और फिर :lv bar bar*दाईं विंडो में चला सकते हैं। फिर बाईं विंडो :lneमें अगले मैच को प्रदर्शित करेगा foo, नहीं bar। ऐसा इसलिए है क्योंकि :lvआप इसे जिस विंडो में चलाते हैं, उसकी लोकेशन सूची का उपयोग करता है, इसलिए प्रत्येक खोज की अपनी स्थान सूची होती है।
ma11hew28
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.