2016-12-29 2 views
7

में लंबी लाइनें अभी मैं उपयोग कर रहा हूँ पर ध्यान न दें।silversearcher

Silversearcher डॉक्स में इस है:

--print-long-lines 
      Print matches on very long lines (> 2k characters by default). 

मैं 2k कुछ और करने के लिए बदल सकते हैं? (मेरे लिए 120, क्योंकि वास्तविक कोड के साथ काम करने वाले किसी भी कोड में ईमानदारी से ऐसा नहीं है)।

उत्तर

8

बहुत अजीब बात यह है कि दस्तावेज --print-long-lines वास्तव में कुछ भी नहीं करता है, फिर भी इसके लिए एक कामकाजी स्विच है: -W NUM/--width NUM जो बिल्कुल दस्तावेज नहीं है। https://github.com/ggreer/the_silver_searcher/pull/720

+1

उबंटू का संस्करण एजी (संस्करण 0.31.0) संस्करण अभी तक इसका समर्थन नहीं करता है। – exebook

1

मैं तीन विकल्प के बारे में सोच सकते हैं:

  1. बस, पूरे लाइन के बजाय अपनी खोज के परिणाम मुद्रित -ओ विकल्प का उपयोग: ag --color -o

  2. उपयोग कम करने के बजाय कटौती जो अच्छी तरह से -एस विकल्प (लंबी लाइनों काट लें) और -आर विकल्प (रंग से बचने के अनुक्रमों से निपटने के लिए) स्क्रीन आकार की चौड़ाई पर लंबी लाइनों को चॉप करता है: ag --color <pattern> | less -R -S

  3. sed या कटौती के बजाय awk: ag --color <pattern> |sed -E "s/(.{$COLUMNS}).*$/\1/"

आपकी स्क्रीन के आकार की सीमा पर लौटे लाइन कट जाएगा कौन सा। बेशक, यदि आप 120 कॉलम पर काटने के लिए निर्धारित हैं, तो आप: ag --color <pattern> |sed -E "s/(.{120}).*$/\1/"

यह अंतिम विकल्प रंग से बचने के अनुक्रम के बीच में चिपकने की संभावना को रोकता नहीं है; यदि आप वास्तव में नरक हैं, तो आप रंग से बचने के अनुक्रमों को अनदेखा करने के लिए sed खोज पैटर्न को संशोधित कर सकते हैं - पहले से ही SO पर उत्तर दिया गया है। उस ने कहा, मुझे उपरोक्त विकल्प 1 की आसानता और शुद्धता के कारण ऐसा करने का उद्देश्य नहीं दिख रहा है।