这里的链接文件说什么,修剪了一下,使这一切发展得更好:
context
使用-A
当上下文行(不匹配的文本,-B
或-C
)
matchContext
在选定的行
selected
非垫在上下文行0
匹配文本
matchSelected
匹配的文本ching text选中的行
(我遗漏了match
;我们会稍后再说)。假设我们运行git grep findme
,只是我们有一个搜索词。
三个技术术语,比如他们,这里有:
匹配的文本:这应该是很明显的。我们正在搜索文字字符串findme
,所以这是每个字符串的出现。对于这些类型的固定字符串,对匹配进行颜色编码并不像对模式那样必要:如果我们正在搜索模式,那么查看模式匹配的内容可能特别有用。
上下文行:这里的线索是提及三个标志。你可以在上下文(-B
),“之后”上下文(-A
)或两者(-C
)之间获得,这基本上意味着如果你正在搜索findme
并且Git发现它会打印出不仅仅是字findme
在里面,但也有一些线前后。
请注意,这些之前和/或之后的行可能而不是其中有findme
- 但他们可能再次!
选择线:Git的那种隐藏这意味着什么,但建立在上面,这是相当猜测能:我们正在寻找的字findme
,它发生在一些线(S)。所以这些行是选择,它们与其中没有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__
(个体经营,ATTR) :
这里我们在外边缘有两条未选中的线,然后是两条选中的线,中间有一条未选中的线。这意味着上下文行也可以被选中行!他们可以同时具有不匹配的文字和匹配的文字。这里有一些特别的奇怪,因为如果上下文线有匹配的话,它会变成一个选定的线 - 那么为什么会有一个matchContext
呢?如果上下文线具有匹配,则它变为选定的线。
通常情况下,设置color.grep.matchContext
从未有任何影响,因为如果有为内会是怎样被上下文线的匹配,它改变成所选行和color.grep.matchContext
不再适用。但是当使用-v
时,一切都会被换掉。这是the documentation定义(虽然不是很好)选择术语:
-v
,--invert-match
选择不匹配的行。
也就是说,grep的的-v
选项反转行选择。通常情况下,找到一个匹配意味着该行被选中,因此您获得selected
(默认=无,但我设置了上面的)和matchSelected
(默认=“粗体红色”)的颜色。但是与-v
,每条匹配的行都是de-已选中,且只有非-匹配行被选中。所以现在选择上下文行,并且匹配行被取消选择。所以现在匹配线我们再没有颜色,除了比赛本身,我们得到任何matchContext
颜色我们设置(默认再次“粗体红色”)。 (当然,与匹配线才会出现,如果你打开上下文,因为grep的唯一输出非选择行作为上下文行。您还可以设置color.grep.context
得到这些-v
上下文美化版线彩色)
最后:
match
匹配文本(相同设定matchContext
和matchSelected
)
这只是设置两者的简写。当matchContext
无用(非-v
)时,它可以有效地作为matchSelected
的别名。当matchSelected
无用(-v
)时,它有效地作为matchContext
的别名。 Git在内部使用它来设置“粗体红色”默认值。
嘿!你的回答非常棒!我意识到我跳过了文档的某些部分,但是,我想整理一个测试,然后......呃...我还是没有把它全部弄清楚。不知怎的,整个事情都困扰着我。我无法完全重现我想要的。当我决定打开这个问题时,我不能“回头”。 最后,坐在它上面至少3个小时后,我意识到: 顺序是关键!只需在_.gitconfig_文件中更改'match','matchContext','matchSelected'和'selected'的顺序即可得到不同的结果! – ppseprus
好吧..再次,我无法阅读! :D – ppseprus
太棒了!为什么我不能给你更多的赞扬?而使用'-c'选项一次性更改配置的技巧......无价!谢谢谢谢!! –