动态选择tcsh完成后缀字符

时间:2018-12-24 13:36:32

标签: csh tcsh completion

我正在为生成虚拟文件树的工具制作tcsh完成脚本。查询时,此工具返回所有可用元素,它们混合结果中的文件和目录(目录中带有尾随/,以将它们与文件区分开)。

例如,此可用性列表命令(module avail)会产生以下结果:

$ module avail
file
b
cd/
d
dir/

然后,如果查询目录的内容,则返回其中包含的元素:

$ module avail dir/
dir/e
dir/f
dir/subdir/

我想注入这些可用元素作为该工具其他子命令的选择。单词完成后,Tcsh完成功能会自动添加一个空格字符作为后缀。仅在单词完成不是目录时,才需要添加此空格字符后缀。如果是目录,则不应该添加后缀字符,以便能够对该目录名进行新查询。

这里有一个小小的补全脚本来说明我遇到的问题:

alias _module_avail 'echo file b cd/ d dir/'

set module_cmds = "load"

complete module 'n/load/`_module_avail`//' \
    "p/1/(${module_cmds})/"

使用此示例脚本,我想在键入module load fi[tab]时添加一个空格字符,但在键入module load dir[tab]时不添加空格后缀。

1 个答案:

答案 0 :(得分:0)

您是否研究过在shell中设置添加后缀? 对我来说,可以实现您正在寻找的行为。

(我会将此添加为问题的评论,但我没有足够的声誉来评论:/)