如何从zsh自动补全函数中删除额外的空格?

7
我使用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

zsh有一个bashcompinit模块。我可以将我的bash complete函数转移到zsh作为一种解决方法。autoload bashcompinitbashcompinit - leo
1个回答

2
compctl -K _my_cpl -S '' ls

这是你所问的问题的答案,但可能不够灵活以适应你想要做的事情。特别地,这种方法不允许你为目录和普通文件指定不同的后缀。如果你需要这样做,我认为你需要切换到“新”的完成系统,并使用不同的-S参数分别调用compadd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接