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