我正在使用Makefile来转换文档
要指定要转换的文档,我必须在2个make-variables中指定文件夹名称:
NAME
和DATE
。
目录结构为/data/$(NAME)/$(DATE)
NAME
可能包含数字和字符
DATE
遵循以下格式:YYYYMMDD_XXXXXXXX
其中X
是十六进制字符
我想完整地建议tcsh中的NAME
和DATE
变量(在网站上强制使用),因为输入那些随机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 如果设置,则文件名完成会在目录末尾添加“/”,并在正常文件完全匹配时将空格添加到普通文件末尾。默认设置。
显然,我希望保持行为(由用户设置)以进行其他完成。
答案 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/