4
私は一種バッシュ完了(CD CCN <tab> => CDのCamel.CaseName)
Foo.Bar.Baz/
Foo.Bar.QuickBrown.Fox/
Foo.Bar.QuickBrown.Interface/
Foo.Bar.Query.Impl/
完了が働くだろう
のファイル/ディレクトリ名の補完を実装する方法を探しています以下のような
~ $ cd QI<tab><tab>
Foo.Bar.QuickBrown.Interface/ Foo.Bar.Query.Impl/
~ $ cd QIm<tab><enter>
~/Foo.Bar.Query.Impl $
しかし、入力(例えばQIm
。 - >*Q*I*m
)からグロブパターンを構築する私の単純なアプローチはまったく同じプレフィックスを共有するファイル/ディレクトリでは動作しません。上記の場合、I、すなわちバッシュ
~ $ cd QI<tab><tab>
Foo.Bar.QuickBrown.Interface/ Foo.Bar.Query.Impl/
~ $ cd Foo.Bar.Qu<tab><tab>
Foo.Bar.QuickBrown.Fox/ Foo.Bar.QuickBrown.Interface/ Foo.Bar.Query.Impl/
を取得し、この場合、より大きな完成セットをもたらす可能補完の最長の共通のプレフィックスと現在の単語を置き換えます。
ここに私の補完機能があります:
_camel_case_complete()
{
local cur pat
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
pat=$(sed -e 's/\([A-Z]\)/*\1*/g' -e 's/\*\+/*/g' <<< "$cur")
COMPREPLY=($(compgen -G "${pat}" -- $cur))
return 0
}
任意のヒントは、通常のファイル名/ディレクトリの完了を壊すことなく、この問題を解決する方法?