仅包含目录的 Zsh 自动完成 ls 命令

仅包含目录的 Zsh 自动完成 ls 命令

假设我有以下文件和目录:

% 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

相关内容