zsh:glob 的菜单完成

zsh:glob 的菜单完成

在 中zsh,如果我输入vim *.txtthen 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

相关内容