在 tcsh complete 中添加后缀行为

addsuffix behaviour in tcsh complete

我正在使用 Makefile 来转换文档。
要指定要转换的文档,我必须在 2 个生成变量中提供文件夹名称:
NAMEDATE.
目录结构为/data/$(NAME)/$(DATE)

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

我最终得到以下建议 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 If set, filename completion adds `/' to the end of directories and a space to the end of normal files when they are matched exactly. Set by default.

显然我想保留行为(由用户设置)以供其他完成。

[后缀]是我要作废的

来自文档:

complete [command [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\//