2016-08-04 1 views
2

Я пытаюсь настроить цвет Git.Параметры цвета Git Grep объяснены и/или сравниваются

После прочтения documentation, я нашел свои параметры, которые я хотел установить.

Все работает отлично, за исключением Grep. Я понял, я не использовал его в прошлом.

Я хотел установить цвета для него с той же палитре, но я не мог проверить некоторые из них ...

Я понятия не имею, что matchContext и match см, и как они отличаются от matchSelected и selected.

matchSelected устанавливает цвет для фактического текста я искал, в то время, как selected называют линии уровня (?) контекст этого матча.

Итак, что такое match? Что делает matchContext комплект? И где, черт возьми, хорошее, подробное описание для них?

Кто-нибудь?

ответ

2

Вот что говорит связанная документация, отделанные немного, чтобы сделать все это работать лучше:

context

        без согласования текста в контекстных строк (при использовании -A, -B , или -C)

matchContext

        соответствующий текст контекстных строк

matchSelected

        соответствующий текст в выбранных строках

selected

        без мата ching text в выделенных линиях

(Я упустил match; мы вернем это через мгновение). Предположим, мы запустили git grep findme, так что у нас есть поисковое слово.

Три технические термины, такие, как они есть, вот:

  • соответствующий текст: Это должно быть довольно очевидно. Мы ищем литеральную строку findme, так что это каждое вхождение этой строки.Цветовое кодирование соответствия не так необходимо для таких типов фиксированных строк, как для шаблонов: если мы искали шаблон, может быть особенно полезно увидеть, что соответствует шаблону.

  • контекстные линии: Ключ здесь упоминание трех флагов. Вы можете получить контекст «до» (-B), «после» (-A) или оба (-C), что в основном означает, что если вы ищете findme, а Git обнаруживает, что он распечатает не только строку с слово findme в нем, но и некоторые строки до и после этой строки.

    Обратите внимание, что эти строки до и/или после этого могут быть не имеют findme в них, но опять же, они могут!

  • выбранные строки: Git вид скрывает, что это значит, но опираясь на вышеизложенное, это довольно угадывание состоянии: мы искали слова findme и это происходило в какой-то линии (линий). Таким образом, эти строки выбрали, что отличает их от любых контекстных строк, в которых не было findme; эти строки не выбраны. (Но смотри ниже!)

Вот пример, при поиске слова or. Git будет цвет or в красном цвете, а в противном случае не делает никакой окраски, по умолчанию, так что я побежал:

git -c color.grep.selected=green grep -C 2 -n or 

который добавляет номера строк, а также с помощью selected=green. К сожалению, я не могу получить StackOverflow к цветовому коду это для меня, так что вместо этого я буду использовать смелое где Git использует зеленый и курсив где он использует красный:

pfod.py-11-
pfod.py-12-This is basically a hybrid of a class and an OrderedDict,
pfod.py:13:or, sort of a data-only class. When an instance of the
pfod.py-14-class is created, all its fields are set to None if not
pfod.py-15-initialized.

Здесь мы имели две невыбранные линии с обеих сторон, а не в какой-либо цвет вообще; и одна выбранная строка посередине, с двумя вхождениями or в пределах одной выбранной линии.

В некоторых случаях линии, которые бы просто быть контекст, на самом деле есть матч:

pfod.py-47- self[field] = None
pfod.py-48- if len(kwargs):
pfod.py:49: raise TypeError('unexpected kwargs %s' % kwargs.keys())
pfod.py-50- if len(args):
pfod.py:51: raise TypeError('unconsumed args %r' % tuple(args))
pfod.py-52-
pfod.py-53- def __getattr__ (самость, атр) :

Здесь у нас были две невыбранные линии на внешних краях, затем две выделенные линии с невыбранной линией между ними. Это означает, что линии контекста также могут быть выбраны линиями!Они могут иметь как несоответствие текст и соответствие текст. В этом есть что-то особенно странное, потому что, если строка контекста имеет совпадение, она становится выбранной линией - так почему же существует matchContext? Если строка контекста имеет совпадение, она изменяется на выбранную строку.

Обычно установка color.grep.matchContext никогда не имеет никакого эффекта, потому что если является матч в то, что был бы контекст строки, она изменяется в выбранной строке и color.grep.matchContext больше не применяется. Но при использовании -v все обменивается. Это где the documentation определяет (хотя и не очень хорошо) термин выбран:

-v, --invert-match

        Выберите несовпадающие линии.

То есть, -v вариант Grep в инвертирует выбор линии. Обычно поиск соответствия означает, что линия выбрана, поэтому вы получаете selected (по умолчанию = нет, но я установил green выше) и matchSelected (по умолчанию = «полужирный красный»). Но с -v каждая строка, которая имеет совпадение, равна de -избирается, и только не -выбранные линии выбраны. Итак, теперь то, что было, выделены контекстные линии, а соответствующие линии не выбраны. Итак, теперь для совпадающих строк мы не получаем цвет снова, кроме самого совпадения, где мы получаем любой цвет matchContext, который мы установили (по умолчанию снова «жирный красный»). (Конечно, линии с матчем выходят только если вы включите от контекста, так как Grep выводит только невыбранные строки как контекстные строки. Можно также установить color.grep.context, чтобы получить эти -v контекстно-роскопию линии раскрашенной.)

Наконец :

match

        соответствующий текст (такой же, как и установка matchContextmatchSelected)

Это всего лишь сокращенная версия для обоих. Когда matchContext бесполезен (не -v), он эффективно работает как псевдоним для matchSelected. Когда matchSelected бесполезен (-v), он эффективно работает как псевдоним для matchContext. Git использует его внутри, чтобы установить «смелый красный» по умолчанию.

+0

Эй! Ваш ответ потрясающий! Я понял, что я пропустил некоторые части документации, однако, я хотел собрать тест и ... ну ... я все еще не понял все. Как-то все это меня прослушивало. Я не мог точно воспроизвести то, что хотел. Я не мог «вернуться», когда решил открыть этот вопрос. И, наконец, после того, как я сидел на нем не менее 3 часов, я понял: Приказ является ключевым! Я получаю разные результаты, просто изменив порядок 'match',' matchContext', 'matchSelected' и' selected' в файле _.gitconfig_! – ppseprus

+0

Ладно .. так .. снова, я не умею читать! : D – ppseprus

+0

Настолько потрясающе!Почему я не могу дать вам больше бонусов? И трюк с использованием опции '-c' для одноразовых изменений конфигурации ... бесценный! Спасибо Спасибо!! –

Смежные вопросы