[英]tcsh completion: Suffix variables with =
我正在 tcsh 中完成 make 。 新詞的理想補全可以是 make-targets 或變量。
例如:
complete make 'n/*/(footarget1 bartarget2 FOOVAR1= BARVAR2=)/'
通過這樣寫,完成后會添加一個新的空格后綴,這在嘗試設置 VAR 時不方便(必須刪除空格)。
如果我將后綴設置為空,則在完成目標時將不方便(應該為下一個爭論輸入一個空格)。
有沒有辦法在其中一個目標完成時添加空格,但在 VAR 完成時不添加任何后綴?
很簡單,只要您的所有目標都可以通過大寫/小寫與變量分開。
complete make \
'C@B*@(BARVAR2=)@@' \
'C@F*@(FOOVAR1=)@@' \
'C@V*@(VAR1= VAR2=)@@' \
'n@*@(target1 target2 VAR1 VAR2 BARVAR2 FOOVAR1)@'
為了完成,僅使用適合的第一個(從上到下閱讀)規則。
如果您以大寫的 ' B
' 開頭,則第一個規則命中,完成到BARVAR2=
,省略后綴空格。
如果您以大寫字母 ' F
' FOOVAR1=
,則FOOVAR1=
的完成方式類似。
' V
' 有兩個選項,用空格分隔。
您可以通過簡單地將新變量添加到其起始字符的括號中來添加新變量。 如果您需要其他起始字符,只需在新生成的行中復制'C@B*@(BARVAR2=)@@' \\
並將B*
替換為您的字符(例如G*
)。
如果您的輸入不是以這些大寫字符開頭,則應用最后一條規則,完成到 target1/target2。
如果匹配可以無歧義地完成,這些將添加后綴空格。
作為獎勵,您還可以將這些作為您的首要規則:
'c@B*=@(val1)@' \|
'c@F*=@(val2)@'
如果您當前的單詞是BARVAR2=
,那么此規則將為您提供val1
作為完成。
對於FOOVAR1=
它給出val2
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.