Modifique a regra de autocompletar bash para excluir nomes de arquivos específicos

4

Eu quero modificar a regra de autocompletar vi bash existente para excluir alguns nomes de arquivos (por exemplo, o arquivo config.log ). Eu tentei usar a variável de ambiente FIGNORE , mas isso não funcionou. Usar o complete builtin substitui a regra existente, em vez de modificá-la.

Existe alguma maneira de fazer isso?

    
por Matthew Cline 08.11.2014 / 22:27

2 respostas

3

Você pode ver a configuração atual com

complete -p vi
complete -o bashdefault -o default -o filenames -o nospace -F _exp_ vi

e a definição da função de shell usada com

type _exp_

Há um recurso complete / opção -X que permite filtrar os resultados. O problema é que isso se aplica apenas a complete actions. Não se aplica aos resultados -o default (não sei sobre -o bashdefault ).

Você pode alterar o compspec:

complete -d -f -o filenames -o nospace -F _exp_ -X '@(config.log|config.doc)' vi

Unfortulately

  1. você pode ter apenas um -X na chamada complete (os antigos são sobrescritos)

  2. você precisa de shopt -s extglob para o trabalho acima; caso contrário, você estará limitado a um único nome ou padrão ( "*.log" )

por 09.11.2014 / 01:14
5

Para excluir nomes de arquivos ou extensões desinteressantes da conclusão do bash, adicione essa linha ao seu arquivo .bashrc:

FIGNORE=".log:.dvi:.pdf:"
    
por 15.12.2016 / 22:54