ZSH:按名称在子目录中标记完整文件

ZSH: tab complete file in subdirectory by name

我希望能够在 zsh 中键入一个文件名,点击选项卡,然后在我当前目录的任何子目录中查看与该名称匹配的文件列表。然后我可以通过这些结果按 tab 键并按回车键进入 select 某个文件,就像内置的 zsh tab 完成功能一样。

所需功能示例:

$ emacs app.css [tab]
*www/css/app.css*    tmp/static/app.css
[enter]
$ emacs www/css/app.css

如果这不是目前的功能,我想我可以编写自定义完成脚本来实现它。

您可以通过使用 ** 模式(匹配多个目录)并将控制函数 _expand 添加到 completer 样式(如果还没有的话)来实现类似的效果).

您至少需要进行以下设置:

autoload -U compinit
zstyle ':completion:*' completer _expand
compinit

然后你可以通过

得到想要的列表
% emacs **/app.css[TAB]

它甚至允许选择一次打开所有匹配的文件。