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 oANY_LETTER_TABcorresponder 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