繁体   English   中英

tcsh 补全:用 = 后缀变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM