बाहरी आदेशों का उपयोग किए बिना कोड परियोजनाओं को नेविगेट करना


9

मैं सीटीआईएस या अन्य बाहरी उपकरणों का उपयोग किए बिना कोड-बेस को नेविगेट करने के लिए, कमांड या खोज मोड में विम कमांड / क्वेरीज़ का टूलबॉक्स इकट्ठा करने की कोशिश कर रहा हूं । Ctags महान हैं, लेकिन आपके द्वारा अटके हुए विकास के वातावरण के आधार पर समर्थन अलग-अलग हो सकता है। मैं सिर्फ विम ज्ञान पर भरोसा करना चाहूंगा।


4
शायद आपको "ctags" के बजाय "बाहरी उपकरण" कहना चाहिए, क्योंकि मेरा पहला सुझाव cscope होगा।
मूरू

1
एक चीज जो मैं उपयोग करता हूं वह है कमांड gd। यह कर्सर को चर के तहत स्थानीय घोषित करने के लिए कर्सर ले जाता है।
निटिश

@ मैं किसी भी बाहरी उपकरण का उपयोग नहीं करना चाहता। क्या मैं सीखने की कोशिश कर रहा हूँ कुशलतापूर्वक एक कोड आधार नेविगेट करने के लिए तकनीक केवल विम आदेशों का उपयोग कर रहे हैं। मुझे पता है कि यह किया जा सकता है, लेकिन स्पष्ट रूप से मेरे पास मेरे ज्ञान की गहरी आवश्यकता है। संभवतः एक अच्छा एसई सवाल नहीं है क्योंकि यह इतना खुला है, लेकिन मुझे नहीं पता कि और कहां देखना है।
user1332148

जवाबों:


11

"खोज शामिल करें" एक ऐसा उपकरण है:

[I and ]I      " search current buffer and included files for
               " the word under the cursor, skipping comments
:ilist foo     " same as above but for 'foo'
:ilist /foo    " same as above but for a word containing 'foo'

"खोज में शामिल करें" से संबंधित, "परिभाषा खोज" दिलचस्प है, भी:

[D and ]D      " search current buffer and included files for
               " the definition of the symbol under the cursor
:dlist foo     " same as above but for definition of 'foo'
:dlist /foo    " same as above but for a definition containing 'foo'

:dlist /       " list all definitions from the current buffer
               " and included files

दोनों उपकरण विभिन्न प्रकार के विकल्पों पर निर्भर करते हैं, जो आपके फ़िलाटाइप प्लगइन्स द्वारा निर्धारित या नहीं किए जा सकते हैं।

देख लो :help include-search


तुम भी उपयोग कर सकते हैं gdऔर gDके हल्के संस्करण के रूप में [Dऔर ]D

देख लो :help gd


वर्तमान बफ़र में, नीचे दी गई कमांड प्रत्येक फ़ंक्शन परिभाषा और उसकी लाइन संख्या को सूचीबद्ध करेगी:

:g/func/#

देख लो :help :g


:grepऔर :vimgrepउपयोगी भी हैं, यदि केवल इसलिए कि उनके परिणाम को क्विकफ़िक्स सूची में खिलाया जाता है, जिसे नेविगेट किया जा सकता है :cn, :cp... और बहुत ही आसान क्विकफ़िक्स विंडो में प्रदर्शित किया जाता है।

देखें :help :grep, :help :vimgrepऔर :help quickfix


QuickFix सूची / खिड़की की बात हो रही है, मैं ने लिखा है इस समारोह (दूसरों के काम पर आधारित) के परिणामों को प्रदर्शित करने [I, ]I, :ilist, [D, ]Dऔर :dlistQuickFix सूची में / खिड़की। YMMV बेशक।


जबकि नेविगेशन उपकरण कड़ाई से नहीं है, मैं जिस विंडो के साथ काम कर रहा हूं उसके हस्ताक्षर पर एक नज़र डालने के लिए पूर्वावलोकन विंडो बहुत उपयोगी है।

देख लो :help preview-window


ने कहा कि…

विम कुछ रेगेक्स पैटर्न से परे आपके कोड के बारे में कुछ भी नहीं जानता है जो आपकी कोडिंग शैली या जो भी हो या नहीं हो सकता है। इसका अर्थ है कि कोड नेविगेशन बेहतर तरीके से बाहरी उपकरणों जैसे ctags, cscope या GNU GLOBAL की मदद से किया जाता है।


5

कोड के माध्यम से नेविगेट करने के लिए बहुत सारे तरीके हैं (विम और बाहरी में शामिल), मैं अभी भी उन्हें खोजता हूं। दैनिक कार्यों में मैं क्या उपयोग करता हूं:

  • प्रोजेक्ट फाइलों में ग्रैपिंग टेक्स्ट और क्विकफिक्स विंडो (मैं ग्रेपिंग के लिए सिल्वर खोजक का उपयोग करता हूं) के माध्यम से नेविगेट करता हूं।
  • भाषा से संबंधित प्लगइन्स का उपयोग करना, मुझे पता है कि जावास्क्रिप्ट, रूबी, गो, के लिए ऐसे हैं जो कार्यक्रम के मॉड्यूल के बीच कूदने की अनुमति देते हैं (जावास्क्रिप्ट प्लगइन में है gf-कमांड
  • Ctrl+O, Ctrl+I- नेविगेशन के "इतिहास" में वापस या आगे कूदें
  • g; - फाइल में अंतिम संपादित जगह पर कूदें
  • विशेष स्थानों पर "बुकमार्क" रखने के लिए निशान का उपयोग करना। आप '[some_letter]कमांड के साथ मार्क लगा सकते हैं , यदि अक्षर कैपिटल है तो आपको वह मार्क मिलेगा जो किसी भी फाइल (बफर) से उपलब्ध होगा।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.