Grep -n के परिणाम को देखते हुए, मैं उस विशिष्ट लाइन में विम कैसे खोल सकता हूं? (केवल कीबोर्ड का उपयोग करके)


9

जब मैं चलता हूं grep "keyword" -nऔर परिणाम की निम्नलिखित सूची प्राप्त करता हूं :

a/b/c:10:    keyword
a/b/c:70:    keyword
a/b/d:50:    keyword

मैं इसमें से किसी एक फ़ाइल (सूची में दूसरा) को कैसे खोल सकता हूं?

मैं अब अपने माउस का उपयोग करके आउटपुट को कॉपी करता हूं, vimऔर उसके बाद कॉपी करता हूं और फिर +लाइन नंबर I कॉपी के साथ जोड़ता हूं। (मतलब मैं vim a/b/c +70फ़ाइल का नाम पाने के लिए माउस कॉपी का उपयोग करके लिखता हूं , और लाइन नंबर पाने के लिए एक और माउस कॉपी [या मैं बस इसे हाथ से कॉपी करता हूं, जब इसकी कमी पर्याप्त हो])

क्या कीबोर्ड शॉर्टकट के साथ ऐसा करने का कोई तरीका है?


आप कुछ इस तरह की कोशिश कर सकते हैं echo a/b/c:70: keyword | awk '{print $1}' | sed 's,:$,,' | sed 's,:, +,' | xargs vim && reset:।
अर्कादियुस ड्राज्स्की

2
इसके अलावा, यदि आप Vim का अधिक कुशलता से उपयोग करने में रुचि रखते हैं, तो समर्पित Vi और Vim Stack Exchange साइट देखें।
मुरु

जवाबों:


14

दो चीज़ें:

  1. विम को कुछ समर्थन है grep

    यदि आप Vim खोलते हैं, और करते हैं :grep keyword ..., Vim परिणाम के साथ क्विकफ़िक्स सूची पॉप्युलेट करता है , और पहली फ़ाइल में कूदता है। आप (और अन्य आदेशों) के साथ n वें क्विकफ़िक्स एंट्री में कूद सकते हैं :cc n

  2. आप grep के आउटपुट का उपयोग करके उपरोक्त त्वरित सूची को पॉप्युलेट कर सकते हैं:

    vim -q <(grep -n keyword ...)
    

    और फिर ऊपर उल्लिखित क्विकफिक्स नेविगेशन कमांड का उपयोग करें।

मैन्युअल रूप से grep के आउटपुट के साथ खेलने की तुलना में या तो सरल है।

(2) के विकल्प के रूप में, आप grep के आउटपुट को किसी फ़ाइल में सहेज सकते हैं और इसके बजाय उस फ़ाइल का उपयोग कर सकते हैं, अगर आपको लगता है कि आप आवश्यक रूप से Vim को नहीं खोलेंगे:

grep ... | tee log
vim -q log

Git स्टेटस पर उसी विधि का उपयोग करने की कोशिश की जा रही है, जिसका कोई लाभ नहीं है :( - vim -q <(git | grep संशोधित)
CIsForCookies

3
@CIsForCookies जो grep -n( <filename>:<line>: ...) के समान प्रारूप में नहीं होगी । मैं गिट के लिए भगोड़ा प्लगइन का उपयोग करता हूं , और फिर यह एक बात है :Gstatus, वांछित फ़ाइल में स्थानांतरित करें और एंटर दबाएं।
मुरु

BTW, मैंने हमेशा रंगों का उपयोग करने के लिए अपने ~ / .bashrc grep alias को संपादित किया , और वह किसी कारण से, -q >()विकल्प को तोड़ दिया ...
CIsForCookies

2

यदि आप grep के लिए पहले से ही समर्थन नहीं करते थे तो आप ऐसा कर सकते हैं, जैसा कि @muru ने उत्तर दिया:

:cexpr system("grep -n keyword")

git grepउदाहरण के लिए इसका उपयोग किसी अन्य कमांड के साथ किया जा सकता है ।

इसके अलावा, आप आउटपुट को एक बफर में खोल सकते हैं और उस पर "cbuffer" का उपयोग कर सकते हैं।

इसके बारे में मैनुअल से क्विकफिक्स अनुभाग देखें ।

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