VIM से grep का उपयोग करते समय, परिणामों पर कैसे जाएं?


32

VIM के लिए grep प्लगइन का उपयोग करते समय, मैं फ़ाइलों के एक सेट के भीतर एक स्ट्रिंग के सभी घटनाओं के लिए वर्तमान निर्देशिका खोज सकता हूं, जैसे:

:grep Ryan *.txt

यह कुछ इस तरह से आउटपुट करता है:

file1.txt:3:Ryan was here
file2.txt:10:Ryan likes VIM
file3.txt:5:superuser.com is a fav of Ryan
(1 of 3): Ryan was here
Press ENTER or type command to continue

अगर मैं एंटर दबाता हूं, तो यह मुझे अपने संपादक के पास वापस ले जाता है। जो मैं वास्तव में करना चाहता हूं, वह उन फाइलों में से एक को खोलने और उस जगह पर कूदने में सक्षम है जहां स्ट्रिंग पाया गया था। क्या इसे करने का कोई तरीका है? 1 of 3हिस्सा मुझे लगता है कि परिणामों के माध्यम से टैब के लिए एक रास्ता है बनाता है, लेकिन मैं नहीं जानता कि क्या आदेशों मेरे लिए उपलब्ध हैं। क्या कोई इस पर कुछ प्रकाश डाल सकता है?

जवाबों:


34

जब आप ENTER दबाते हैं, तो आपको file1.txt की लाइन 3 दिखनी चाहिए। अगले मैच में कूदने के लिए, निष्पादित करें :cn; पिछले मैच में कूदने के लिए, निष्पादित करें :cp। निष्पादन :copenमैचों की सूची युक्त एक विंडो खोलेगा। कर्सर को वांछित मैच में ले जाएँ और उस मैच में कूदने के लिए ENTER दबाएँ।

उपयोग करने पर अधिक जानकारी के लिए :grep, देखें

:help grep
:help quickfix.txt

टाइपिंग :cnऔर :cpक्विकफ़िक्स सूची में आगे और पीछे की ओर बढ़ना अजीब हो सकता है, इसलिए मैं इन मैपिंग का उपयोग करता हूं:

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv

इसके अलावा, :grepकमांड एक प्लगइन नहीं है; यह विम का हिस्सा है।


शानदार जवाब, धन्यवाद! BTW, क्या आप vim grep वाले फ़ोल्डर्स के माध्यम से एक पुनरावर्ती खोज कर सकते हैं?
Marplesoft

जब तक आप एक यूनिक्स प्रणाली पर चल रहे हैं, तब तक आप विम से जो भी तर्क जोड़ सकते हैं, उसे आप शेल से निष्पादित कमांड में :grepजोड़ सकते हैं grep। तो, आप वर्तमान निर्देशिका के साथ और नीचे सभी .txt फ़ाइलों के माध्यम से एक पुनरावर्ती खोज कर सकते हैं :grep -R --include=*.txt Ryan .। आप विम की :vimgrepकमांड का उपयोग करके एक पुनरावर्ती खोज भी कर सकते हैं , लेकिन तर्क अलग हैं और मैं शायद ही कभी इसका उपयोग करता हूं क्योंकि यह इससे कम है :grep
गैरीजोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.