5

我有一个 shell 模式,将一些文件标记为“无聊”,即备份文件、pyo文件、vim 备份、自动生成的目录等。让我们称之为$BORING_STUFF

zstyle ':completion:*' file-patterns \ 
    '%p:globbed-items' \
    '*(^-/):regular-files' \
    '*(^-/):boring-files' \
    '.*(^-/):hidden-files' \
    '*(-/):regular-directories' \
    '*(-/):boring-directories' \
    '.*(-/):hidden-directories'

在这种情况下,我的每个组的范围也受到了适用的限制ignore-patterns。(如boring-files只包含无聊文件,regular-files不包含无聊文件)

我希望总是显示粗体项目,而其他项目只有在没有其他匹配项时才会显示。(又名。touch <tab>将显示常规目录和常规文件,但不显示隐藏文件,而touch .<tab>将显示隐藏文件。)

  • 全局项目
  • 目录
    • 常规目录
    • 无聊的目录
    • 隐藏目录
  • 文件
    • 常规文件
    • 无聊的文件
    • 隐藏文件
4

1 回答 1

1

开始了。

setopt extended_glob
zstyle ':completion:*' file-patterns \
  "^($BORING_FILES|.*)(-/):directories:normal\ directories %p~($BORING_FILES|.*)(^-/):globbed-files:normal\ files" \
  "^($BORING_FILES|.*)(^-/):noglob-files:noglob\ files" \
  ".*~($BORING_FILES)(^-/):hidden-files:hidden\ files .*~($BORING_FILES)(-/):hidden-directories:hidden\ directories" \
  "($BORING_FILES)(^-/):boring-files:boring\ files ($BORING_FILES)(-/):boring-directories:boring\ directories" \

zstyle ':completion:*' group-order \
  builtins expansions aliases functions commands globbed-files \
  directories hidden-files hidden-directories \
  boring-files boring-directories keywords viewable
于 2014-08-10T13:21:02.103 回答