जवाबों:
जैसा कि डॉक्टर कहते हैं:
Vim has two ways to find matches for a pattern: Internal and external.
संक्षेप में, :vimgrep
फ़ाइलों में पढ़ने और खोजने के लिए विम के grep तंत्र का उपयोग करता है। :grep
एक ही काम को प्राप्त करने के लिए एक बाहरी आदेश का उपयोग करता है।
/
के लिए मौजूदा बफर केवल, जबकि खोज है :[vim]grep
फ़ाइलों की एक पद्धति के माध्यम से खोज, आप एक बार में एक पूरी परियोजना में खोज करने के लिए अनुमति देता है।
:h grep
अधिक जानकारी के लिए एक नज़र है ।
:[vim]grep
ओवर /?
का एक लाभ यह है कि परिणाम क्विकफिक्स की सूची (या यदि आप उपयोग करते हैं तो स्थान सूची :l[vim]grep
) में डालते हैं , इसका मतलब है कि आप उपयोग करने वाले सभी मैचों की सूची खींच सकते हैं :cl
। फिर आप सूची से इच्छित परिणाम पर जाने के लिए किसी संख्या का उपयोग कर सकते हैं।
इसका मतलब यह भी है कि आप वर्तमान बफ़र :[vim]grep pattern %
को खोजने के लिए उसी कमांड का उपयोग कर सकते हैं जैसे कि आपके पूरे कोड बेस को खोजने के लिए :[vim]grep pattern path
ताकि इसमें कुछ अच्छा समरूपता हो।
इसके बाद आप फिर से ब्रांच कर सकते हैं और सिल्वर सर्फर / रिपग्रेप का उपयोग करके आपको बहुत शक्तिशाली खोज दे सकते हैं। इन्हें :[vim]grep
कमांड पर मैप किया जा सकता है ।
मेरे देखे हुए 3 प्राथमिक फायदे हैं
एक सुसंगत regex
इंजन / सिंटैक्स का उपयोग करें : का उपयोग करके :grep/vimgrep
आप ए को परिभाषित grepprg
कर सकते हैं, जिसे grep/ack/ag
आदि के रूप में परिभाषित किया जा सकता है । इसका उपयोग करके आप एक सुसंगत regex
इंजन का उपयोग करके वर्तमान बफर या कई बफ़र्स / फ़ाइलों को खोज सकते हैं । दूसरी ओर, यदि आप vim के/pattern
विकल्प का उपयोग करते हैं, तो आप vim के डिफ़ॉल्ट रेगेक्स इंजन पर अटक जाते हैं, जिसमें सिंटैक्स की तुलना में एक अलग सिंटैक्स होता extended regular expression
है। इसलिए, किसी भी समय आपको एक अभिव्यक्ति की खोज करनी होगी, आपको यह सोचना / याद रखना होगा कि क्या आपको उपयोग करना चाहिए \)
या बस )
और अन्य मतभेद। यह बहुत कष्टप्रद हो सकता है ( /programming/3864467/whats-the-difference-between-vim-regex-and-normal-regex )
vimgrep एक क्विकफ़िक्स / स्थान सूची:grep/vimgrep
को पॉप्युलेट करता है : आपको खोज सूची को पॉप्युलेट करने की अनुमति देता है। ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d )।
यदि आप स्थान सूची का उपयोग करना चाहते हैं, तो ]q
यदि आप टिम-पॉप्स अनलिमिटेड प्लगइन ( https://github.com/tpope/vim-unimpaired ) हैं, तो आप इसे नेविगेट करने के लिए शॉर्टकट का उपयोग कर सकते हैं
vim के भीतर जटिल खोजें : आमतौर पर यदि आपको जटिल खोजों को करना है तो आपको कमांड लाइन का उपयोग करना पड़ सकता है। हालाँकि, यदि आप greprg
ठीक से परिभाषित करते हैं और कमांड का उपयोग करते हैं जैसे कि [1]
: vim / pattern1 / find . -type f
आप बहुत जटिल खोज कर सकते हैं और अपने location list
या अपने खोज परिणामों को प्रदर्शित कर सकते हैं quickfix list
।
[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/