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