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

lil*_*jwg 6 zsh zsh-completion

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

我想知道是否有是完成了一个文件名的任何地方上下文,就像一个键序列^XC_correct_filename,或者如何配置的zsh做的事情吗?

Pau*_*ce. 7

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

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

编辑:已添加$PREFIX

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

当你按下时,这会使完成列表中的所有文件Ctrl- x Tab在每一步而不是Tab.您可以选择适合您的其他按键组合.

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

if (( $# )); then
  # _files "$@" -g "*.(#i)(${~formats//:/|})(-.)"
  _files "$@"
  return
fi
Run Code Online (Sandbox Code Playgroud)


小智 5

丹尼斯的回答没有为我扩展波形符,所以我会得到类似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
Run Code Online (Sandbox Code Playgroud)