我试图为我的Git定制颜色。
在阅读documentation后,我找到了我想要设置的选项。
除了Grep,一切都很好。 我已经意识到,我过去并没有真正使用它。
我想用相同的调色板为它设置颜色,但我无法测试其中的一些......
我不知道matchContext
和match
指的是什么,以及它们与matchSelected
和selected
的区别。
matchSelected
为我搜索的实际文字设置颜色,而selected
则为该匹配的行级(?)上下文。
那么,match
在做什么? matchContext
设置了什么?对于这些,地狱是一个好的,详细的描述?
任何?
答案 0 :(得分:3)
以下是链接文档所说的内容,稍微修整一下以使其更好地工作:
context
上下文行中的不匹配文字(使用
-A
,-B
或-C
时)
matchContext
匹配上下文行中的文字
matchSelected
匹配选定行中的文字
selected
所选行中不匹配的文字
(我已经遗漏了match
;我们会暂时把它放回去)。假设我们运行git grep findme
,我们就有一个搜索词。
这三个技术术语如下:
匹配文字:这应该是非常明显的。我们正在搜索文字字符串findme
,因此这是该字符串的每次出现。对这些类型的固定字符串进行颜色编码并不像模式那样:如果我们正在搜索模式,那么查看模式匹配的内容可能特别有用。
上下文行:这里的线索是提到三个标志。您可以获取“之前”上下文(-B
),“之后”(-A
)或两者(-C
),这基本上意味着如果您正在搜索{{1}并且Git发现,它不仅会打印出单词findme
的行,而且会打印出该行之前和之后的一些行。
请注意,这些之前和/或之后的行可能不其中包含findme
- 但他们可能会这样做!
选择的行:Git隐藏了这意味着什么,但建立在上面,它是相当可猜测的:我们正在搜索单词findme
并且它发生了在一些行中。所以这些行是选择,这使它们与任何没有findme
的上下文行区别开来;这些行未被选中。 (但见下文!)
以下是搜索单词findme
的示例。 Git会将or
标记为红色,否则默认情况下不会着色,所以我跑了:
or
添加行号以及使用git -c color.grep.selected=green grep -C 2 -n or
。不幸的是我无法让StackOverflow为我设置颜色代码,所以我会使用粗体,其中Git使用绿色,而斜体使用红色:
selected=green
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__
(self, attr):
通常情况下,设置__getattr__
永远不会产生任何影响,因为如果 匹配一个上下文行,它就会变为一个选定的行并matchContext
不再适用。但是当使用color.grep.matchContext
时,一切都会被交换掉。这是the documentation定义选择的术语(尽管不是很好):
color.grep.matchContext
,-v
选择不匹配的行。
也就是说,grep的-v
选项反转行选择。通常情况下,找到匹配意味着该行已被选中,因此您获得--invert-match
(默认=无,但我设置上方为-v
)和selected
(默认=“粗体红色”)颜色。但是对于green
,匹配的每一行都是 de - 被选中,并且只选择非匹配的行。那么现在选择是上下文行,并且取消选择匹配行。所以现在对于匹配线我们再没有颜色,除了匹配本身,我们得到任何matchSelected
颜色我们设置(默认再次“粗体红色”)。 (当然,如果打开上下文,匹配的行只会出现,因为grep只输出未选择的行作为上下文行。您还可以设置-v
以获取那些matchContext
上下文行彩色。)
最后:
color.grep.context
匹配文字(与设置
-v
和match
相同)
这只是设置两者的简写。当matchContext
无用时(非matchSelected
),它会有效地作为matchContext
的别名。当-v
无用时(matchSelected
),它会有效地作为matchSelected
的别名。 Git在内部使用它来设置“粗体红色”默认值。