tcsh中的addsuffix行为完成

时间:2017-07-17 16:10:27

标签: tcsh complete

我正在使用Makefile来转换文档 要指定要转换的文档,我必须在2个make-variables中指定文件夹名称:
NAMEDATE
目录结构为/data/$(NAME)/$(DATE)

NAME可能包含数字和字符 DATE遵循以下格式:YYYYMMDD_XXXXXXXX其中X是十六进制字符 我想完整地建议tcsh中的NAMEDATE变量(在网站上强制使用),因为输入那些随机X-chars很烦人。

我最终得到以下内容来向我推荐NAME变量: 'c@{NAME}=@D:/data@' \ 'C/N*/(NAME=)/'

只要我unset addsuffix,这就可以正常工作 make N[TAB] » make NAME=[TAB] » make NAME=10001.1
如果设置了addsuffix,则光标将位于make NAME=中的尾随空格之后。
对于complete,一个新单词开始,因此它不建议我NAME的目录。 如果我转到NAME=,那么它还会将尾随/添加到文件夹名称,这是不需要的。

有没有办法为这些完成禁用此行为?
tcsh.org州:

  

addsuffix 如果设置,则文件名完成会在目录末尾添加“/”,并在正常文件完全匹配时将空格添加到普通文件末尾。默认设置。

显然,我希望保持行为(由用户设置)以进行其他完成。

1 个答案:

答案 0 :(得分:0)

[后缀]是我想要无效的。

来自文档:

  

完成 [命令[word / pattern / list [:select] / [[suffix] /] ...]]

所以我最终得到了 complete make \ 'c@NAME=@D:/data/@' \ 'c@DATE=@`echo $COMMAND_LINE | sed -f /data/sandbox/sbulka/tmp/sed-tmp.sed | xargs ls`@' \ 'C/N*/(NAME=)//' \ 'n/NAME=/(DATE=)//'

sed在一个文件中,所以我不必费心去引用。看起来像这样: s/^.*NAME=\([^ ]*\).*$/\/data\/\1/