Conclusão da guia Bash filename

2

Tenho notado que a conclusão da tabulação é filtrada de maneira útil no bash. Eu sou um programador java e geralmente uso os comandos java e javac no terminal para tarefas rápidas ou remotas.

Digamos que eu tenha os dois arquivos comuns em um diretório: MyProgram.java e MyProgram.class

Se eu pedir bash para tabcomplete a partir do prefixo de comando java M , preenche diretamente para java MyProgram , isso é útil. Claramente, o bash é configurado para aceitar apenas conclusões * class para o comando java (e sabe remover a extensão do arquivo), ou o comando java está dizendo isso de alguma forma.

Gostaria de realizar o mesmo com um editor de texto, para que eu pudesse digitar nano M e ter a guia completa em nano MyProgram.java em vez de pausar em nano MyProgram. , é possível dizer, lista negra * .class da aba do nano completa?

Acima de tudo, eu estaria interessado em saber se esta é uma configuração bash ou algo do lado do programa.

    
por lynks 29.08.2012 / 12:52

1 resposta

3

java tem um script de preenchimento automático separado que substitui o mecanismo de conclusão padrão. Na minha distribuição (Arch Linux), ele é instalado em /usr/share/bash-completion/completions/java .

Para substituir o comportamento de conclusão de tabulação, você pode criar um script desse tipo. Se você quiser que todos os arquivos .class sejam ignorados para cada comando, defina a variável FIGNORE (por exemplo, em ~/.bashrc ). Exemplo: FIGNORE=.class . Na página de manual de bash :

FIGNORE
A colon-separated list of suffixes to ignore when performing filename completion (see READLINE below). A filename whose suffix matches one of the entries in FIGNORE is excluded from the list of matched filenames. A sample value is ".o:~".

    
por 29.08.2012 / 13:05