Was ich möchte:
cd c/ra<tab>
schließt zu ab ~/code/rails-app
und cd c/<tab>
Zeigt eine Liste von Verzeichnissen an ~/code
Was ich momentan habe:
c ra<tab>
schließt zu ab c rails-app
wenn ich ein Verzeichnis habe ~/code/rails-app
und c <tab>
Zeigt eine Liste von Verzeichnissen an ~/code
Indem ich das in meiner Hand habe .zshrc
:
c() { cd ~/code/$1; }
_c() { _files -W ~/code -/; }
compdef _c c
Dieses Tool sieht vielversprechend aus: https://github.com/flavio/jump aber ich hätte gerne etwas leichteres.
Antworten:
1 für die Antwort № 1Tab-Vervollständigungen, wie Sie sie zumindest für Verzeichnisse beschrieben haben, sollten machbar sein zsh
ohne die Notwendigkeit, ein zu schreiben zsh
Funktion.
Dieser Linkbemerkt zum Beispiel das Tippen /u/l/b
dann Tab expandiert nach /usr/local/bin
auf die Aufforderung.
Das funktioniert für mich - wenn ich ein Verzeichnis mache ~/code/rails-app
eine solche:
zsh% ls ~/code
another-app another-dir rails-app
zsh% ls ~/code/rails-app
one two
dann:
zsh% cd c/ra<TAB> # this expands to "cd code/rails-app"
zsh% cd c/<TAB><TAB> # Double tab, one to expand "c" to "code",
zsh% # # second gives me the zsh-completion menu
Ich kann nicht darauf hinweisen, was zsh
option this is - ich benutze eine ziemlich stark modifizierte ~/.zshrc
und Bits von oh-my-zsh
. Dies Macht Funktionalität ist gegeben durch zsh
ohne aktiviert zu werden; wenn nicht, Details entweder in der ersten Verbindung oder irgendwo in oh-my-zsh
oder auch einige Version des ZSH-Handbuchs sollte helfen. (Ich finde das Handbuch ein wenig ... überwältigend, um es gelinde auszudrücken).
Ich glaube nicht, dass Sie eine Funktion schreiben müssen, um dieses Verhalten zu erreichen - zsh
ist definitiv dazu in der Lage.