我用 compctl -K _my_cpl ls
将我的自动完成功能挂接到 ls
命令。该函数从索引文件中返回名称列表。
但是,zsh 总是在每次完成后添加一个空格。如果我想自动完成多级目录,我每次都必须删除一个空格。 有没有办法像 -o nospace
那样删除额外的空间? bash完整命令中的选项?
我测试了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
最佳答案
compctl -K _my_cpl -S '' ls
这回答了您提出的问题,但对于您想要做的事情可能不够灵活。特别是,这种方法不允许您为目录和常规文件指定不同的后缀。如果你想这样,我认为你需要切换到"new"完成系统并单独调用
compadd
与不同-S
论据。
关于autocomplete - 如何从 zsh 自动完成功能中删除额外的空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372866/