गिट पेजर कम है, लेकिन आउटपुट कलरिंग क्या है?


18

lessस्वयं इस सूत्र के अनुसार वाक्य रचना हाइलाइटिंग करने में सक्षम नहीं है ।

हालांकि, git diffअच्छी तरह से कम में रंगीन आउटपुट दिखाता है, इसका डिफ़ॉल्ट पेजर है। जब मैं git diffकिसी फ़ाइल में आउटपुट को रीडायरेक्ट करता हूं , तो कोई भी रंग एस्केप अनुक्रम दिखाई नहीं देता है।

क्या git diffयह पता है कि इसे कहां भेजा जा रहा है, और तदनुसार आउटपुट स्वरूपित करता है? कोई ऐसा कैसे करेगा?


मैंने अभी देखा कि git रंग diffआउटपुट (जैसे git diff), हालांकि, यह नहीं जानता कि कैसे वाक्यविन्यास को सामान्य रूप से हाइलाइट करना है। जैसे

git show 415fec6:log.tex

किसी भी TeX जैसी सिंटैक्स को सक्षम नहीं करता है।


gitसूत्रों को पढ़ते हुए , मुझे निम्नलिखित संकेत मिले

में diff.h:

int use_color;

मैं पहले सिंटैक्स हाइलाइटिंग की बात कर रहा था , लेकिन यह सही नहीं था। मेरा मतलब है आउटपुट कलरिंग, उदाहरण के लिए देखें

उदाहरण रंग उत्पादन


1
क्या आपके पास हटाए गए और जोड़े गए लाइनों के लिए कोई वास्तविक वाक्यविन्यास हाइलाइटिंग है, या बस लाल और हरा रंग है?
पाओलो एबरमन

BTW: कम रंग पाने के लिए: git diff --color=always | less -r (या less -RANSI के लिए)। BTW: अन्य आदेशों के लिए जो डिफ़ॉल्ट रूप से पृष्ठांकित नहीं git diffकरता ( करता है) आप इसे स्विच कर सकते हैं:git -p some_git_command
हाइपरपैलियम

जवाबों:


18

Git का उपयोग isatty()यह जांचने के लिए किया जाता है कि क्या stdout एक tty है: इसका उपयोग यह देखने के लिए किया जाता है कि क्या पेजर ( pager.c ) के साथ-साथ रंगों ( color.c ) का भी उपयोग किया जाना चाहिए ।


महान समय, मैं भी सिर्फ यह पाया!
सेबस्टियन

11

चल रहा है:

git diff --color=always > output

रंग से बचता है।

लानत है मैं में यह पाया gitहै color.cफ़ाइल:

static int check_auto_color(void)                                           
{                                                                           
  if (color_stdout_is_tty < 0)                                              
    color_stdout_is_tty = isatty(1);                                        
  if (color_stdout_is_tty || (pager_in_use() && pager_use_color)) {         
    char *term = getenv("TERM");                                            
    if (term && strcmp(term, "dumb"))                                       
      return 1;                                                             
  }                                                                         
  return 0;                                                                 
}  

3

lessके साथ -r --raw-control-charsऔर रंग का समर्थन कर सकते हैं-R --RAW-CONTROL-CHARS

आप pygmentizeहाइलाइटिंग करने के लिए अजगर का उपयोग कर सकते हैं और इसमें पाइप लगा सकते हैं।

इसे संयोजित करने के लिए सुपरयुसर पर वर्णित कम फिल्टर को कॉन्फ़िगर करें


लिंक वास्तव में दिलचस्प है, धन्यवाद। क्या आप जानते हैं कि gitक्या वास्तव में पाइसेटाइजेशन का उपयोग किया जाता है? क्योंकि यह एक निर्भरता के रूप में सूचीबद्ध नहीं है।
सेबस्टियन

btw, जब मैं git diffबाल lessप्रक्रिया को चलाता हूं तो किसी भी विकल्प से जोड़ा नहीं जाता है (न तो -Rऔर न ही -r)। हालांकि, मुझे नहीं पता कि अगर गिट इसे एक विशेष तरीके से कहते हैं और इस तरह से आर्गल्स दिखाई नहीं दे रहे हैं htop
सेबस्टियन

gitरंग से बच कोड यह स्वयं है आउटपुट। यह भी लिखा है cकि इसमें पायथन को जोड़ना एक बहुत बड़ी निर्भरता होगी। यह lessपर्यावरण के माध्यम से नियंत्रित करने में सक्षम हो सकता है
मैट

1
शायद LESSएनवी संस्करण के माध्यम से ?
मैट

3
हां, LESS = FRX को पर्यावरण में जोड़ा जाता है (देखें pager.c )।
23
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.