O padrão que você deseja não é um regex, é um bash
glob e você precisa do -f
para informar que está concluindo os arquivos. Além disso, você não deseja default
para -o
, pois isso adicionará os nomes de arquivos que você acabou de filtrar, ou soltar a opção ou escolher algo diferente (usei dirnames
para que também conclua os diretórios). O seguinte deve fazer o trabalho:
complete -f -o dirnames -X '*.@(aux|pdf)' vim
A cotação relevante da página man
para o glob usado:
If the extglob shell option is enabled using the shopt builtin, several extended pattern matching operators are recognized. In the following description, a pattern-list is a list of one or more patterns separated by a |. Composite patterns may be formed using one or more of the following sub-patterns:
?(pattern-list) Matches zero or one occurrence of the given patterns *(pattern-list) Matches zero or more occurrences of the given patterns +(pattern-list) Matches one or more occurrences of the given patterns @(pattern-list) Matches one of the given patterns !(pattern-list) Matches anything except one of the given patterns
extglob
já deve estar ativado por bash
conclusão, mas se não, você também precisa fazer isso.