Conclusão da guia Bash filename

2

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

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

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

Eu gostaria de realizar o mesmo com um editor de texto, para que eu pudesse digitar nano M e tê-lo guia completa para nano MyProgram.java em vez de fazer uma pausa nano MyProgram., é possível dizer, lista negra *.classe da aba de nano completa?

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

lynks
fonte

Respostas:

3

java possui 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ê poderia criar um script desse tipo. Se você quer apenas ter tudo .class arquivos ignorados para cada comando, você pode definir o FIGNORE variável (por exemplo, no seu ~/.bashrc ). Exemplo: FIGNORE=.class. Na página de manual do bash:

FIGNOR
Uma lista de sufixos separados por dois-pontos para ignorar ao realizar a conclusão do nome do arquivo (consulte o texto abaixo). Um nome de arquivo cujo sufixo corresponda a uma das entradas em FIGNORE é excluído da lista de nomes de arquivos correspondentes. Um valor de amostra é ".o: ~".

Lekensteyn
fonte
ahh é isso que eu estava procurando, muito obrigado
lynks