如何让 zsh 在制表符补全过程中*仅*列出当前目录中的内容?

如何让 zsh 在制表符补全过程中*仅*列出当前目录中的内容?

在 zsh 中,当我输入几个字符时,它会列出所有这些内容(命令和我认为是子文件)。我如何获得 zsh只是列出我的 current_directory 的内容?

在此输入图像描述

在上图中,我键入了该字符a,希望它能让我按 Tab 键完成a_dir,但它为我提供了完整的命令目录。

是否有一个永久命令可以让我输入字符a

答案1

tag-order像这样设置样式

zstyle :completion::complete:-command-:: tag-order local-directories -

仅当启用该选项时,该标记local-directories才可用。autocd告诉-zsh 丢弃其他tags中任何可能的匹配项

insert-tab也可能会找到感兴趣的风格;所以当$BUFFER为空时,它仍然会补全当前目录中的文件。

zstyle ':completion:*' insert-tab false

答案2

为了回答你的问题(即使我不确定它的目的)并解决它后面的评论,有一种方法可以仅通过文件名完成而不失去正常完成。您可以将文件名完成关联到一个键(此处Ctrl+F):

zstyle ':completion:files:*' completer _files
zstyle ':completion:files:*' file-patterns '*:all\ files'
zstyle ':completion:files:*' hidden all
zle -C files menu-complete _generic
bindkey '^F' files

通过设置也许会有用自动光盘并通过添加后缀别名,例如:

alias -s pdf="zathura"
alias -s jpg="sxiv -f"
alias -s tex="vim"
setopt autocd

相关内容