कब उपयोग करें: grep और: vimgrep vim में?


17

Vim में :makeयह निर्माण और त्रुटियां ठीक करने के लिए आसान बनाता है, और :grepऔर :vimgrepबर्ताव करता है की तरह है :make। लेकिन आपको इन दोनों आदेशों की आवश्यकता क्यों है? सिर्फ और सिर्फ प्रेस क्यों नहीं खोजते n? बस खोज करने से उनके क्या फायदे हैं?

जवाबों:


17

जैसा कि डॉक्टर कहते हैं:

Vim has two ways to find matches for a pattern: Internal and external.

संक्षेप में, :vimgrepफ़ाइलों में पढ़ने और खोजने के लिए विम के grep तंत्र का उपयोग करता है। :grepएक ही काम को प्राप्त करने के लिए एक बाहरी आदेश का उपयोग करता है।

/के लिए मौजूदा बफर केवल, जबकि खोज है :[vim]grepफ़ाइलों की एक पद्धति के माध्यम से खोज, आप एक बार में एक पूरी परियोजना में खोज करने के लिए अनुमति देता है।

:h grepअधिक जानकारी के लिए एक नज़र है ।


4

/?केवल वर्तमान बफर खोज लेकिन :grepऔर :vimgrepतर्कों के रूप मनमाने ढंग से फ़ाइलें / पैटर्न / globs ले।


4

:[vim]grepओवर /?का एक लाभ यह है कि परिणाम क्विकफिक्स की सूची (या यदि आप उपयोग करते हैं तो स्थान सूची :l[vim]grep) में डालते हैं , इसका मतलब है कि आप उपयोग करने वाले सभी मैचों की सूची खींच सकते हैं :cl। फिर आप सूची से इच्छित परिणाम पर जाने के लिए किसी संख्या का उपयोग कर सकते हैं।

इसका मतलब यह भी है कि आप वर्तमान बफ़र :[vim]grep pattern %को खोजने के लिए उसी कमांड का उपयोग कर सकते हैं जैसे कि आपके पूरे कोड बेस को खोजने के लिए :[vim]grep pattern pathताकि इसमें कुछ अच्छा समरूपता हो।

इसके बाद आप फिर से ब्रांच कर सकते हैं और सिल्वर सर्फर / रिपग्रेप का उपयोग करके आपको बहुत शक्तिशाली खोज दे सकते हैं। इन्हें :[vim]grepकमांड पर मैप किया जा सकता है ।


0

मेरे देखे हुए 3 प्राथमिक फायदे हैं

  1. एक सुसंगत 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 )

  2. vimgrep एक क्विकफ़िक्स / स्थान सूची:grep/vimgrep को पॉप्युलेट करता है : आपको खोज सूची को पॉप्युलेट करने की अनुमति देता है। ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d )।

    यदि आप स्थान सूची का उपयोग करना चाहते हैं, तो ]qयदि आप टिम-पॉप्स अनलिमिटेड प्लगइन ( https://github.com/tpope/vim-unimpaired ) हैं, तो आप इसे नेविगेट करने के लिए शॉर्टकट का उपयोग कर सकते हैं

  3. vim के भीतर जटिल खोजें : आमतौर पर यदि आपको जटिल खोजों को करना है तो आपको कमांड लाइन का उपयोग करना पड़ सकता है। हालाँकि, यदि आप greprgठीक से परिभाषित करते हैं और कमांड का उपयोग करते हैं जैसे कि [1]

    : vim / pattern1 / find . -type f

    आप बहुत जटिल खोज कर सकते हैं और अपने location listया अपने खोज परिणामों को प्रदर्शित कर सकते हैं quickfix list

[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.