一部のフォルダーのファイルに基づいてコマンドの補完リストを作成することは可能ですか?
私のプロジェクトの1つで~/sublime_projects/*.sublime-project
として保存されているSublime Text 2を実行したいとします。望ましい行動:
subl<tab><tab>
foo bar project2
foo.sublime-project, bar.sublime-project, project2.sublime-project
に~/sublime_projects
ファイルがある場合。
次のbash関数を使用して、.bashrc
に追加できます
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
それが何をする:
subl TAB TAB TAB
と入力すると、projectsディレクトリにあるすべてのプロジェクトがリストされます。
subl ANY_LETTER TAB
と入力すると、ANY_LETTER_TAB
がプロジェクトの最初の文字と一致する場合、プロジェクト名が自動的に補完されます。
たとえば、~/projects
の内部にtest.sublime-project
とfoo.sublime-project
があり、ターミナルでsubl t TAB
と入力すると、subl test.sublime-project
が表示されます。
[〜#〜] update [〜#〜]以下のスクリプトはPWD
を変更しません。今後の参考のために両方を残しています。
# 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
2番目のスクリプトは、subl
の後に入力された文字を探し、一致するファイル名の完全パスに置き換えます。たとえば、test.sublime-project
に~/projects
と入力すると、subl t
と入力するとsubl /home/USERNAME/projects/test.sublime-project
に置き換えられます