我使用compctl -K _my_cpl ls
将我的自动完成功能挂钩到ls
命令。该函数返回索引文件中的名称列表。
但是,zsh总是在每次完成后添加一个空格。如果我想自动完成多级目录,我每次都要删除一个空格。 有没有办法像bash complete命令中的-o nospace
选项一样删除额外的空间?
我测试了zstyle ':completion:*' add-space false
命令,但它不起作用。谢谢。
_my_cpl() {
local cur last opts
# current word in command line.
read -cA cur
last=$cur[-1]
# grep all directories and file names under current directory level.
opts=`egrep "${last}[^/]*[$|/]*" ~/index -o |uniq`
reply=($=opts)
}
compctl -K _my_cpl ls
答案 0 :(得分:2)
compctl -K _my_cpl -S '' ls
这回答了您提出的问题,但对于您想要做的事情可能不够灵活。特别是,此方法不允许您为目录和常规文件指定不同的后缀。如果您需要,我认为您需要切换到“新”完成系统,并使用不同的compadd
参数单独调用-S
。