Čo chcem:
cd c/ra<tab>
dokončí sa ~/code/rails-app
a cd c/<tab>
zobrazí zoznam dirs v rámci ~/code
Čo v súčasnosti majú:
c ra<tab>
dokončí sa c rails-app
ak mám adresár ~/code/rails-app
a c <tab>
zobrazí zoznam dirs v rámci ~/code
Tým, že to má v mojom .zshrc
:
c() { cd ~/code/$1; }
_c() { _files -W ~/code -/; }
compdef _c c
Tento nástroj vyzerá sľubne: https://github.com/flavio/jump ale ja by som rád niečo ľahšie.
odpovede:
1 pre odpoveď č. 1Tab dokončenie, ako ste "opísal, aspoň pre adresáre, mali by byť vykonateľné zsh
bez nutnosti písať zsh
Funkcie.
Tento odkaz, napríklad, poznamenáva, že písanie /u/l/b
potom pútko rozširuje na /usr/local/bin
na výzvu.
Toto funguje pre mňa - ak si vytvorím adresár ~/code/rails-app
napríklad:
zsh% ls ~/code
another-app another-dir rails-app
zsh% ls ~/code/rails-app
one two
potom:
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
Nemôžem poukázať na to, čo zsh
možnosť je to - používam pomerne silne upravené ~/.zshrc
a bitov oh-my-zsh
, toto sila byť funkčnosť daná zsh
bez toho, aby bolo potrebné povoliť; ak nie, podrobnosti v prvom prepojení alebo niekde inde oh-my-zsh
alebo dokonca niektoré verzie manuálu ZSH by malo pomôcť. (Príručku nájdem trochu ... ohromujúci, aspoň povedzme).
Nemyslím si, že musíte napísať funkciu, aby ste dosiahli toto správanie - zsh
je to určite schopný.