2016-09-19 17 views
5

मुझे हाल ही में git grep मिला है और इसकी गति और वास्तव में रेपो में फ़ाइलों की खोज की तरह आ गया है। लेकिन उबंटू में ack (ack-grep) से आने वाली, एक चीज वांछित होने के लिए छोड़ दी गई है आउटपुट स्वरूपण, दुर्भाग्य से grepack से अधिक है। जाओ पता लगाओ।आप `git grep` आउटपुट को 'ack` आउटपुट की तरह कैसे दिखते हैं?

ack:

  1. अपने आप मेंपहली पंक्ति पर मिलान फ़ाइल नाम प्रिंट करता है।
  2. रंग मिलान फ़ाइल नामबोल्ड हरे पर प्रकाश डाला गया है।
  3. प्रिंटों लाइन संख्या, और केवललाइन नंबर, प्रत्येक मिलान लाइन साथ।
  4. रंग लाइन संख्याबोल्ड पीले पर प्रकाश डाला गया है।
  5. रंग प्रत्येक मिलान स्ट्रिंगपृष्ठभूमि पीले पर प्रकाश डाला गया है।
  6. विभिन्न फ़ाइलों के मैचों के बीच रिक्त रेखा प्रिंट करता है।

दूसरी ओर, git grep:

  • हरलाइन मिलान पर फ़ाइल नाम प्रिंट करता है।
  • प्रिंट कोई लाइन नंबर
  • प्रिंट अलग-अलग फ़ाइलों के मैचों के बीच कोई रिक्त रेखा नहीं।
  • रंग केवलमिलान पाठ, एक बोल्ड लाल पर प्रकाश डाला गया।

वहाँ git grep विकल्प, या अन्य उपकरणों के साथ कॉम्बो के किसी सेट, git grep उत्पादन ack उत्पादन की तरह दिखने लायक बना सकता है?

उत्तर

9

आप पहले से ही अपना स्वयं का प्रश्न का हिस्सा उत्तर दिया है (--break फ़ाइलों के बीच एक रिक्त पंक्ति सम्मिलित करता है, --heading अलग फ़ाइल नाम प्रिंट, और -n या --line-number आप प्रत्येक पंक्ति पर संख्या लाइन देता है)।

बाकी रंग विकल्प हैं, जो प्रविष्टियों के माध्यम से set in git config हैं। पूरी जानकारी के लिए दस्तावेज़ देखें, लेकिन यह आप के लिए क्या पूछा के आधार पर ध्यान दें, मैं इस काम कर देता है लगता है:

[alias] 
    ack = -c color.grep.linenumber=\"bold yellow\" \ 
      -c color.grep.filename=\"bold green\" \ 
      -c color.grep.match=\"reverse yellow\" \ 
      grep --break --heading --line-number 

(यह व्यक्त किया जाता है के रूप में आप के हवाले से गंदा है, क्योंकि git config --global --edit में यह देखना चाहते हैं)।

या, यह एक आदेश में सेट अप करने के लिए:

git config --global alias.ack "-c color.grep.linenumber=\"bold yellow\" \ 
    -c color.grep.filename=\"bold green\" \ 
    -c color.grep.match=\"reverse yellow\" \ 
    grep --break --heading --line-number" 

जोड़ें या -c विकल्पों घटाना बदलने के लिए जो कुछ भी आप की तरह रंग, और/या color.grep.<name> = color स्थापित करने के बजाय git ack का उपयोग करके अपनी पसंद के डिफ़ॉल्ट पर उन्हें सेट उर्फ।

+1

शायद 'एके' इसके लिए बेहतर उपनाम नाम होगा। –

+0

यह बहुत अच्छा काम करता है, लेकिन एक कष्टप्रद बात यह है कि मैं खोज शब्द के बाद विकल्प नहीं डाल सकता जैसे कि मैं 'grep' और 'ack' के साथ कर सकता हूं। उदाहरण के लिए, '> git ack" खोज शब्द "-सी 5' परिणाम 'घातक: खराब ध्वज' -C 'फ़ाइल नाम के बाद उपयोग किया जाता है'। निष्पक्ष होने के लिए, '> git grep "खोज शब्द" -C 5' करता है। – CivFan

3

Travis Jeffery से, को समूह ack तरहgit grep उत्पादन:

git config --global alias.g "grep --break --heading --line-number" 

और फिर जैसे आप git grep होगा git g का उपयोग करें:

git g <search_string> 

यह ack उत्पादन के लिए एक पूरा मैच नहीं है - इसमें रंग हाइलाइटिंग गुम है - लेकिन एक त्वरित समाधान के लिए यह ठीक है।

संबंधित मुद्दे