假设我有以下文件和目录:
% ls
bui00293 buiawer builds/ buiowpe/
我想列出的内容builds
% ls bui[TAB]
然而,Zsh 显示了上面所有文件和目录的选项。我想要的是 zsh 命令的自动完成,cd
即。仅自动完成目录名称。
答案1
如果您总是只想完成目录名称ls
,您可以将其放入您的.zshrc
:
compdef _dirs ls
您可以通过“新”完成系统(由 初始化compinit
)做更奇特的事情风格。根据您的选择,您可能需要unalias ls
。然后,只在ls
命令行上完成目录:
zstyle ':completion:*:ls:*' file-patterns '*(/):directories'
默认情况下,您只能完成目录,但如果没有目录匹配,则完成任何文件名:
zstyle ':completion:*:ls:*' file-patterns '%p:globbed-files' '*(/):directories'
您还可以定义一个键绑定来仅完成目录,然后您可以在任何地方使用它。
zle -C complete_dirs .complete-word _dirs
bindkey '^X/' complete_dirs