7

有时我想要一个文件名而不是 zsh 为我猜测的文件名。例如,我有一个没有正确后缀的 PNG 文件,这使 zsh 认为它不是图片,并且在我键入完整的参数.png时不会列出它。Tabdisplay

我想知道无论上下文在哪里,是否有一个完成文件名的键序列,比如^XCfor _correct_filename,或者如何配置 zsh 来做这件事?

4

2 回答 2

8

您可以添加键绑定来执行您想要的操作:

zle -C complete complete-word complete-files
bindkey '^X\t' complete
complete-files () { compadd - $PREFIX* }

编辑:添加$PREFIX

您可以将这些行添加到您的~/.zshrc文件中。

当您在每个步骤按Ctrl-x Tab而不是Tab. 您可以选择其他适合您的击键组合。

或者要使 ImageMagick 补全始终包含所有文件,请尝试编辑(首先备份)文件/usr/share/zsh/functions/Completion/Unix/_imagemagick(或类似文件)并更改它以注释掉以开头的现有行_files并添加显示的新行:

if (( $# )); then
  # _files "$@" -g "*.(#i)(${~formats//:/|})(-.)"
  _files "$@"
  return
fi
于 2010-04-17T19:41:16.450 回答
2

丹尼斯的回答并没有为我扩展波浪号,所以complete-files: no matches found: ~/ma*当我尝试在foo ~/ma. 不过,我确实在zsh FAQ中找到了一个可以扩展它们的替代方法:

zle -C complete-file complete-word _generic
zstyle ':completion:complete-file::::' completer _files
bindkey '^xF' complete-file
于 2018-04-22T17:39:06.223 回答