在 中zsh
,如果我输入vim *.txt
then Tab,它会扩展为vim f1.txt f2.txt f3.txt
.
如何让它显示一个完成菜单,列出与模式匹配的文件,以便我可以选择单个文件?
答案1
% PS1='%% ' exec zsh -f
% autoload -U compinit && compinit
% setopt GLOB_COMPLETE
% touch aa ab ac ad
% vim a*
将循环浏览选项;然后是菜单(例如所有内容)
% zstyle ':completion*:default' menu 'select=0'
% vim a*
欲了解更多信息,请参阅zshoptions(1)
“从 Bash 到 Z Shell“关于完成系统的可读性稍差的文档的书。
按需完成菜单需要一个自定义小部件:
function blaah {
local revert
revert=0
if [[ $options[(k)globcomplete] = off ]]; then
setopt globcomplete
revert=1
fi
zle menu-expand-or-complete
if [[ $revert -eq 1 ]]; then
unsetopt globcomplete
fi
}
zle -N blaah
# or perhaps additionally 'vicmd' or instead 'emacs', depending
binkey -M viins "^W" blaah