Conclusão da guia Comando dos argumentos da pasta

4

É possível criar uma lista de conclusões para um comando baseado em alguns arquivos da pasta?

Digamos que eu queira executar o Sublime Text 2 em um dos meus projetos, que são salvos como ~/sublime_projects/*.sublime-project . Comportamento desejado:

 subl<tab><tab>
   foo bar project2

caso haja foo.sublime-project, bar.sublime-project, project2.sublime-project arquivos em ~/sublime_projects .

    
por mreq 24.08.2013 / 11:06

1 resposta

4

Você pode usar a seguinte função bash, adicioná-la em você .bashrc

Anote o caminho do diretório para a variável PROJECTS_DIR

# bash completion for sublime projects in ~/projects
_subl()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    PROJECTS_DIR="/home/mreq/projects/"
    LOOK_FOR="*.sublime-project"
    cd ${PROJECTS_DIR}
    PROJECTS=$(ls ${LOOK_FOR})
    COMPREPLY=( $(compgen -W "${PROJECTS}" -- $cur) )
}
complete -F _subl subl

O que faz:

  • quando você digita subl TAB TAB TAB , lista todos os projetos no diretório de projetos

  • quando você digita subl ANY_LETTER TAB , o auto conclui o nome do projeto se o ANY_LETTER_TAB corresponder ao primeiro caractere do projeto.

Por exemplo, se você tiver dentro de ~/projects o seguinte: test.sublime-project e foo.sublime-project e digite subl t TAB no terminal, você receberá subl test.sublime-project

UPDATE o script abaixo não altera o PWD que estou deixando ambos para referência futura.

# bash completion for sublime projects in ~/projects
_subl()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    PROJECTS_DIR="/home/mreq/projects/"
    LOOK_FOR=".sublime-project"
    # cd ${PROJECTS_DIR}
    PROJECTS=$(ls ${PROJECTS_DIR} | grep "^${cur}.*${LOOK_FOR}")
    COMPREPLY=${PROJECTS_DIR}${PROJECTS}
}
complete -F _subl subl

O segundo script procura por um caractere digitado após subl e o substitui pelo caminho completo do nome do arquivo correspondente. Por exemplo, se houver um test.sublime-project em ~/projects escrevendo subl t será substituído por subl /home/USERNAME/projects/test.sublime-project

    
por Stef K 24.08.2013 / 13:32