以下是链接文档所说的内容,稍作修改以使其更好地工作:
context
上下文行中的不匹配文本(使用-A
、-B
或时-C
)
matchContext
匹配上下文行中的文本
matchSelected
匹配选定行中的文本
selected
选定行中的不匹配文本
(我已经忽略了match
;我们一会儿再把它放回去)。假设我们 run 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__
(self, attr):
在这里,我们在外边缘有两条未选中的线,然后是两条选中的线,中间有一条未选中的线。这意味着上下文行也可以是选定的行!它们可以同时具有非匹配文本和匹配文本。这有一些特别奇怪的地方,因为如果上下文行有匹配项,它就会成为选定的行——那么为什么会有 amatchContext
呢?如果上下文行有匹配项,它将变为选定行。
通常,设置color.grep.matchContext
永远不会产生任何影响,因为如果在本来应该是上下文行的内容中有匹配,它会变为选定的行并且不再color.grep.matchContext
适用。但是当使用时,-v
一切都会被交换。这是文档定义(虽然不是很好)术语selected的地方:
-v
,--invert-match
选择不匹配的行。
也就是说,grep 的-v
选项会反转行选择。通常,找到匹配意味着选择了该行,因此您将获得selected
(default = none,但我在green
上面设置) 和matchSelected
(default = "bold red") 颜色。但是使用-v
,每条匹配的行都会被取消选择,并且只选择不匹配的行。所以现在选择了上下文行,并取消选择匹配行。所以现在对于匹配线,我们再次没有颜色,除了匹配本身,我们得到matchContext
我们设置的任何颜色(再次默认为“粗体红色”)。(当然,只有打开上下文才会出现匹配的行,因为 grep 只会将未选择的行输出为上下文行。您也可以设置color.grep.context
使这些-v
上下文化的线条着色。)
最后:
match
匹配文本(与设置matchContext
和相同matchSelected
)
这只是设置两者的简写。当matchContext
是无用的(非-v
)时,它有效地作为 的别名matchSelected
。When matchSelected
is useless ( -v
),它有效地作为matchContext
. Git 在内部使用它来设置“粗体红色”默认值。