Zsh - Tab Completion für ein command

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
shevegen
Beiträge: 416
Registriert: 30.03.2004 00:32:53

Zsh - Tab Completion für ein command

Beitrag von shevegen » 30.08.2011 19:53:14

Hallo!

Ich bin ein Bash-User.

In Bash habe ich mein Problem bereits gelöst. Jetzt würde ich eine Lösung für Zsh auch benötigen.

Aber vorweg, hier der Code für Bash:

Code: Alles auswählen

completion_for_ry()
{
  local cur prev all_programs
  
  COMPREPLY=()
  cur="${COMP_WORDS[COMP_CWORD]}"
  prev="${COMP_WORDS[COMP_CWORD-1]}"
  all_programs="
   3ddesktop
   3dpong
   855resolution
   zziplib
  "

  if [[ ${cur} == * ]] ; then
    COMPREPLY=( $(compgen -W "${all_programs}" -- ${cur}) )
    return 0
  fi
}
complete -F completion_for_ry ry
Erklärung:
Wenn ich "ry" eintippe, danach ein Leerzeichen und "3dp" eintippe und TAB drücke, dann erhalte ich folgendes Ergebnis:

"ry 3dpong"

Das ist nur ein Auszug im Skript. all_programs wird dynamisch generiert und hat etwa 3000 Einträge.

Ok, Dieses Tab Completion klappt in Bash wunderbar.

Wie kann ich das in Zsh auch erreichen?

Das keyword command sollte:
"ry"
sein. Die Argumente zu "ry" werden in all_programs aufgelistet.

Hat wer eine Ahnung wie man Tab Completion in Zsh erreichen kann?

Benutzeravatar
shevegen
Beiträge: 416
Registriert: 30.03.2004 00:32:53

Re: Zsh - Tab Completion für ein command

Beitrag von shevegen » 17.10.2011 10:16:50

Kann mir irgendwer vielleicht ein kleines Beispiel geben wie man zsh completion erreicht?

Angenommen mit diesem Input:

Code: Alles auswählen

  katze hund eidechse eichel
Und in Verbindung dazu wenn man ein Command davor setzt, z. Bsp:

Code: Alles auswählen

  cd ka<TAB>
  cd hun<TAB>
  cd ei<TAB>

Antworten