De um modo geral, você precisa refinar a zstyle
chamada . que não se aplica a todas as conclusões, mas apenas ao preenchimento do arquivo. Para uma conclusão comum, a sintaxe do especificador de contexto é :completion:WIDGET:COMPLETER:COMMAND:ARGUMENT:TAG
.
-
WIDGET
é definido apenas por alguns widgets especiais, deixe-o genérico (*
). -
COMPLETER
écomplete
para conclusão normal e pode ter outros valores para tarefas como autocorreção. -
COMMAND
é tipicamente o nome do comando cujos argumentos estão sendo concluídos. Mais precisamente, é a palavra depois decompdef
. Alguns comandos complexos mudam ao concluir subcomandos. Para lugares especiais na sintaxe do shell, é um nome de contexto entre traços , como-parameter
após um$
ou-command-
para a primeira palavra em um comando. -
ARGUMENT
é tipicamente algo comoargument-3
para o terceiro argumento de não-opção ouoption--foo-1
para o argumento da opção--foo
. -
TAG
é usado internamente por alguma função de conclusão, mas nem sempre é uma das tags convencionais nomes .
Em zstyle
declarations , declarações mais específicas têm precedência sobre menos específicos.
- Uma declaração com mais dois pontos (
:
) é mais específica que uma com menos dois pontos. - Com um número igual de colunas, uma declaração é pelo menos tão específica quanto outra se cada parte delimitada por dois pontos for pelo menos tão específica quanto a parte correspondente na outra. Para cada parte:
-
*
é mais específico que qualquer outra coisa. - Qualquer coisa com curingas é mais específico que uma string simples sem curingas.
-
Assim, em geral, para criar uma exceção para os nomes de comandos, basta adicionar outra declaração zstyle
que é especificamente sobre comandos.
No entanto, há uma diferença: matcher-list
é aplicado globalmente, não no contexto da conclusão. No seu caso, desde que você queira apenas um único recurso, use matcher
em vez disso.
zstyle ':completion:*' matcher 'm:{a-zA-Z}={A-Za-z} l:|=* r:|=*'
zstyle ':completion:*:*:-command-:*' matcher 'm:{a-zA-Z}={A-Za-z}'