我通过将文件添加_camel_case
到我的个人文件~/.zsh/functions folder
(使用$fpath
变量中的任何文件夹)来使此文件“很好”地工作,其内容如下:
#autoload
[[ -z "$PREFIX" ]] && return 1
relpath=$(dirname $PREFIX)
[[ -e $relpath ]] || return 1
files=$(ls $relpath)
regex=$(echo $(basename $PREFIX) | sed -e 's/\([A-Z][^A-Z]*\)/\1[^A-Z]+/g')
correctedfiles=($(echo $files | grep -P $regex | sed -e :a -e '$!N;s/\n/ /;ta'))
results=($(for file in $correctedfiles; do echo "$relpath/$file"; done))
compadd -U -f -- $results
然后,将以下行添加到〜/ .zshrc中
zstyle ':completion:*' completer _complete _correct _path_files _camel_case
请注意,这很可能不是一个“好的”解决方案,因为我对zsh的完成系统没有太多的了解(我猜只有很少的人真正拥有),但是它确实可以解决您所描述的问题。