原因:我启用了 autocd,但我从未使用它,因为它使制表符补全变得非常麻烦,因为我的系统上的每个命令名都将与文件名补全一起完成。
期望行为:如果完成的字符串不是当前文件夹中任何文件的前缀,我希望 zsh 仅执行制表符完成命令。
期望行为的示例:
$ ls
foo1
foo2
$f<TAB>
foo1
foo2
$fi<TAB>
find
... (other commands that start with fi)
我想如果这不可能的话,至少将目录补全放在命令补全之前会更好。
答案1
我的文件中有以下三行~/.zshrc
:
zle -C complete-files complete-word _generic
zstyle ':completion:complete-files:*' completer _files
bindkey "^F" complete-files
这会绑定Ctrl-f
到文件/文件夹完成,因此如果我知道我肯定想要使用制表符完成文件名,那么我会使用Ctrl-f
而不是<tab>
。显然,您可以通过更改为其他内容来使用不同的绑定^F
。结果:
$ ls
foo1
foo2
$ f<tab>
f2py
factor
faillog
...
$ f<Ctrl-f>
foo1
foo2
答案2
答案3
如果你这样做
. f<TAB>
那么只会列出文件名。我不知道 zsh 是否有相同的行为。一般来说,当您必须输入路径时,bash 只会使用文件名自动完成。