這裏的鏈接文件說什麼,修剪了一下,使這一切發展得更好:
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'選項一次性更改配置的技巧......無價!謝謝謝謝!! –