executable
Тег вызывает _files -g '*(-*)
в этом случае. Затем _files
вызывается more _tags
, поэтому необходимо будет также указать эти неявно указанные теги в функциях завершения .
zstyle -e ':completion:*:*:-command-:*:*' tag-order ' reply=( "executables:Executables:Executables builtins:Builtins:Builtins commands:Commands:Commands aliases:Aliases:Aliases functions:Functions:Functions parameters:Variables:Variables reserved-words:Keywords:Keywords globbed-files directories" "-" ) '
Было бы полезно добавить globbed-files
и directories
в этом случае:
% ls -al total 80 drwxr-xr-x 3 t t 4096 May 18 08:27 . drwxrwxrwt 16 root root 69632 May 18 15:27 .. drwxr-xr-x 2 t t 4096 May 18 08:27 directory -rwxr-xr-x 1 t t 0 May 18 08:27 executable-file -rw-r--r-- 1 t t 0 May 18 08:27 test % ./<TAB> Executables directory/ executable-file*
Но, как указано выше, каталоги и локальные исполняемые файлы будут входить в одну группу «Исполняемые файлы». Если мы хотим, чтобы «каталоги» входили в другие группы, мы могли бы указать file-patterns
непосредственно и использовать его следующим образом:
zstyle ':completion:*:*:-command-:*:*' file-patterns \ '*(#q-*):executables:Executables *(-/):directories:Directories' zstyle -e ':completion:*:*:-command-:*:*' tag-order ' reply=( "executables:Executables:Executables builtins:Builtins:Builtins commands:Commands:Commands aliases:Aliases:Aliases functions:Functions:Functions parameters:Variables:Variables reserved-words:Keywords:Keywords directories:Directories" - ) '
В приведенном ниже примере «каталог» и «исполняемый файл» находятся в отдельных группах:
% ls -al total 80 drwxr-xr-x 3 t t 4096 May 18 08:27 . drwxrwxrwt 15 root root 69632 May 18 15:24 .. drwxr-xr-x 2 t t 4096 May 18 08:27 directory -rwxr-xr-x 1 t t 0 May 18 08:27 executable-file -rw-r--r-- 1 t t 0 May 18 08:27 test % ./<TAB> Executables executable-file* Directories directory/
Ниже приведен самый маленький пример .zshrc:
autoload -Uz compinit && compinit zstyle ':completion:*:*:*:*:*' group-name '' zstyle ':completion:*:descriptions' format '%B%F%d%f%b' zstyle ':completion:*:*:*:*:*' menu 'select' # This comment out block is just for a reminder of my answer's first half. # zstyle -e ':completion:*:*:-command-:*:*' tag-order ' # reply=( # "executables:Executables:Executables # builtins:Builtins:Builtins # commands:Commands:Commands # aliases:Aliases:Aliases # functions:Functions:Functions # parameters:Variables:Variables # reserved-words:Keywords:Keywords # globbed-files directories" # "-" # ) # ' zstyle ':completion:*:*:-command-:*:*' file-patterns \ '*(#q-*):executables:Executables *(-/):directories:Directories' zstyle -e ':completion:*:*:-command-:*:*' tag-order ' reply=( "executables:Executables:Executables builtins:Builtins:Builtins commands:Commands:Commands aliases:Aliases:Aliases functions:Functions:Functions parameters:Variables:Variables reserved-words:Keywords:Keywords directories:Directories" - ) '
Обновлено: закомментируйте ненужный блок.