Ich bin auf der Suche nach einer Möglichkeit, Abschluss für Datei-/Verzeichnisnamen der ArtBash Abschluss für Camel.CaseNames (cd CCN <tab> => cd Camel.CaseName)
Foo.Bar.Baz/
Foo.Bar.QuickBrown.Fox/
Foo.Bar.QuickBrown.Interface/
Foo.Bar.Query.Impl/
wo die Fertigstellung funktionieren würde, zu implementieren wie
~ $ cd QI<tab><tab>
Foo.Bar.QuickBrown.Interface/ Foo.Bar.Query.Impl/
~ $ cd QIm<tab><enter>
~/Foo.Bar.Query.Impl $
jedoch mein stark vereinfachten Ansatz ein glob Musters aus dem Eingang des Gebäudes (zB QIm
-.>*Q*I*m
) funktioniert nicht genau für Dateien/Verzeichnisse des gleichen Präfix teilen. In dem Fall, der oben erhalte 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/
d.h. bash das aktuelle Wort mit dem längsten gemeinsamen Präfix der möglichen Vervollständigungen, die in diesem Fall führt zu einem größeren Abschluss Satz ersetzt.
Hier ist meine Vervollständigungsfunktion:
_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
}
Irgendwelche Hinweise, wie dieses Problem zu beheben, ohne die normalen Dateinamen/Verzeichnis Abschluss zu brechen?