以下是链接文档的内容,稍作修改以使其效果更好:
context
上下文行中的不匹配文本(使用时-A
, -B
, or -C
)
matchContext
匹配上下文行中的文本
matchSelected
匹配所选行中的文本
selected
所选行中的文本不匹配
(我遗漏了match
;我们稍后会把它放回去)。假设我们跑git grep findme
,这样我们就有了一个搜索词。
这三个技术术语如下:
-
匹配文本: 这个应该是很明显的了。我们正在搜索文字字符串findme
所以这是该字符串的每次出现。对于这些类型的固定字符串,对匹配进行颜色编码并不像对于模式那样必要:如果我们正在搜索模式,那么查看模式匹配的内容可能特别有用。
-
上下文线:这里的线索是提到了三个标志。您可以获得“之前”上下文(-B
),“之后”上下文(-A
), 或两者 (-C
),这基本上意味着如果您正在搜索findme
Git 发现,它不仅会打印出带有单词的行findme
其中,还有该行之前和之后的一些行。
请注意,这些之前和/或之后的行可能not have findme
在他们身上——但话又说回来,他们可能会!
-
选定的行:Git 有点隐藏了这意味着什么,但是基于上面的内容,这是相当可以猜测的:我们正在搜索这个词findme
它发生在某些行中。所以这些线是selected,这将它们与任何没有的上下文行区分开来findme
在他们中;这些行未被选择。 (但见下文!)
这是一个搜索单词的例子or
。 Git 会着色or
默认情况下,为红色,否则不着色,所以我运行:
git -c color.grep.selected=green grep -C 2 -n or
添加行号以及使用selected=green
。不幸的是,我无法让 StackOverflow 为我对此进行颜色编码,所以我将使用bold其中 Git 使用绿色,并且italics使用红色的地方:
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
在选定的一行内。
在某些情况下,这些行would只是上下文,实际上有一个匹配:
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__
(自身,属性):
在这里,我们在外边缘有两条未选定的线,然后是两条选定的线,中间有一条未选定的线。这意味着上下文线也可以是选定的线!他们可以两者兼得不匹配文本和matching文本。这有一些特别奇怪的地方,因为如果上下文行有匹配,它就会成为选定的行 - 那么为什么会有一个matchContext
根本吗?如果上下文行有匹配项,它将更改为选定的行。
通常情况下,设置color.grep.matchContext
从来没有任何影响,因为如果有is上下文行中的匹配,它会变成选定的行并且color.grep.matchContext
不再适用。但使用时-v
一切都被调换了。这是哪里文档 https://git-scm.com/docs/git-grep定义(尽管不是很好)这个术语selected:
-v
, --invert-match
选择不匹配的行。
也就是 grep 的-v
option inverts线路选择。通常,找到匹配意味着该行被选择,所以你得到selected
(默认=无,但我设置green
上面)和matchSelected
(默认=“粗体红色”)颜色。但与-v
,每条有匹配的行都是de-选择的,并且仅non- 选择匹配的行。那么现在怎么办were选择上下文行,取消选择匹配行。因此,现在对于匹配线,我们再次得不到任何颜色,除了匹配本身,我们得到任何颜色matchContext
我们设置的颜色(默认再次为“粗体红色”)。 (当然,只有当您打开上下文时,才会出现匹配的行,因为 grep 只输出未选定的行作为上下文行。您还可以设置color.grep.context
得到那些-v
上下文相关的线条已着色。)
Finally:
match
匹配文本(与设置相同matchContext
and matchSelected
)
这只是设置两者的简写。什么时候matchContext
是无用的(非-v
),它有效地作为别名matchSelected
. When matchSelected
没用(-v
),它有效地作为别名matchContext
。 Git 在内部使用它来设置“粗体红色”默认值。