有时我想要一个文件名而不是 zsh 为我猜测的文件名。例如,我有一个没有正确后缀的 PNG 文件,这使 zsh 认为它不是图片,并且在我键入完整的参数.png
时不会列出它。Tab
display
我想知道无论上下文在哪里,是否有一个完成文件名的键序列,比如^XC
for _correct_filename
,或者如何配置 zsh 来做这件事?
有时我想要一个文件名而不是 zsh 为我猜测的文件名。例如,我有一个没有正确后缀的 PNG 文件,这使 zsh 认为它不是图片,并且在我键入完整的参数.png
时不会列出它。Tab
display
我想知道无论上下文在哪里,是否有一个完成文件名的键序列,比如^XC
for _correct_filename
,或者如何配置 zsh 来做这件事?
您可以添加键绑定来执行您想要的操作:
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
丹尼斯的回答并没有为我扩展波浪号,所以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