绑定键以在Zsh中的上下文的任何位置完成文件名

时间:2010-04-17 13:43:18

标签: zsh zsh-completion

有时我想要一个文件名而不是zsh为我猜测的。例如,我有一个没有正确.png后缀的PNG文件,这使得zsh认为它不是图片,当我输入Tab来完成{{1}的参数时,它不会列出它}。

我想知道在上下文所在的文件名是否有完整的键序列,例如display ^XC,或者如何配置zsh来执​​行该操作?

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

丹尼斯的答案并没有为我扩展,所以当我试图在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