Musisz włączyć tę AUTO_NAME_DIRSopcję w konfiguracji Zsh
setopt autonamedirs
to musi się zdarzyć, zanim ustawisz PROJ.
Alternatywnie, jeśli nie potrzebujesz PROJniczego innego niż przełączanie (i wyświetlanie) ścieżek w Zsh , możesz ustawić
hash -d PROJ=$HOME/project
Wyjaśnienie:
Używana funkcja nosi nazwę „Katalogi nazwane statycznie”. Zwykle nazwane katalogi muszą być wywoływane, a ~następnie nazwą parametru powłoki, którego wartość zaczyna się od /, PROJw twoim przypadku.
Jeśli CDABLE_VARSjest włączone (co domyślnie robi Oh-My-Zsh ), ~tak naprawdę nie jest wymagane. Dlatego możesz użyć PROJ/project_namezamiast ~PROJ/project_name. (ale to by się nie udało, gdyby istniał katalog z rzeczywistą nazwą PROJ).
Ponieważ Oh-My-Zsh pozwala AUTO_CDci nawet nie używać cd. Jeśli polecenie nie może zostać wykonane i pasuje do nazwy katalogu, Zsh przejdzie cddo tego katalogu.
Przy wszystkich nazwanych katalogach wyszukiwania mogą odbywać się w dwóch kierunkach
- czy dana nazwa wskazuje katalog (np. czy parametr zawiera ścieżkę zaczynającą się od
/)?
- czy bieżący katalog ma nazwę?
Podczas gdy pierwszy rodzaj wyszukiwania odbywa się automatycznie, gdy argument zaczyna się od ~(lub w niektórych przypadkach i jest włączany CDABLE_VARSnawet bez), drugi rodzaj (używany w wierszu polecenia) wymaga, aby katalog był wymieniony w tabeli skrótów katalogu ( hash -ddla listy tego stołu). W świeżo uruchomionym Zsh ten stół mieszający jest zwykle pusty. Następnie zostaną wypełnione danymi uzyskanymi podczas wykonywania ~rozszerzeń.
W oryginalnej powłoce PROJzostał pomyślnie rozwinięty $HOME/projectsi dlatego tabela skrótów katalogu zawiera teraz PROJ=$HOME/projects(gdzie $HOMEjest zastąpiona rzeczywistą ścieżką katalogu głównego). Zsh może teraz sprawdzić to pod kątem podpowiedzi. Po uruchomieniu tmux uruchamiana jest nowa powłoka, a tablica skrótów katalogu jest ponownie pusta, dlatego nazwa nie jest zastępowana w wierszu poleceń.
Z AUTO_NAME_DIRSwpisem w katalogu tablica skrótów jest tworzona natychmiast, gdy parametr jest ustawiony na wartość zaczynającą się od /(lub jest usuwany, jeśli nowa wartość nie zaczyna się od /). Możesz także dodać ręcznie do tabeli skrótów katalogu za pomocą hash -d NAME=PATH.