Po zainstalowaniu nowego oprogramowania, już otwarty terminal z zsh nie będzie wiedział o nowych poleceniach i nie będzie mógł wygenerować dla nich autouzupełniania. Najwyraźniej otwarcie nowego terminala rozwiązuje problem, ale czy indeks (lub jakkolwiek go nazwiesz) można odbudować, aby automatyczne uzupełnianie działało na starym terminalu?
Próbowałem z, compinit
ale to nie pomogło. Ponadto, czy istnieje sposób, który nie jest zależny od powłoki? Fajnie jest też mieć sposób na zweryfikowanie odpowiedzi (z wyjątkiem odinstalowania czegoś i ponownej instalacji).
Mam na myśli to, że po wpisaniu kilku znaków nazwy polecenia, mogę nacisnąć Tabi zsh
powinienem zrobić resztę, aby wyświetlić pełną nazwę.
zsh
autocomplete
phunehehe
źródło
źródło
Odpowiedzi:
Aby odbudować pamięć podręczną wykonywalnych poleceń, użyj
rehash
lubhash -rf
.Upewnij się, że nie odznaczyłeś tej
hash_list_all
opcji (powoduje to jeszcze mniejszy dostęp do dysku, ale rzadziej aktualizuje pamięć podręczną).Jeśli nie chcesz wpisywać polecenia, możesz powiedzieć zsh, aby nie ufał swojej pamięci podręcznej podczas wypełniania, umieszczając następujący wiersz w swoim
~/.zshrc
¹:Występuje koszt wydajności, ale w typowych obecnie ustawieniach pulpitu jest nieistotny. (Nie dotyczy to systemu
$PATH
NFS lub systemu pozbawionego pamięci RAM).Samo
zstyle
polecenie jest udokumentowane nazshmodule
stronie man. Wartości stylów są udokumentowane na stronachzshcompsys
izshcompwid
man, lub możesz przeczytać źródło (tutaj_command_names
funkcji). Jeśli chciałeś mieć czytelną dokumentację… jeśli ją znajdziesz, daj mi znać!¹ wymaga zsh ≥4,3.3, dzięki Chris Johnsen
źródło
PATH="$PATH"
sposób również wykona zadanie.HASH_LIST_ALL
jest pokazany jako domyślny w mojej dokumentacji.Jeśli masz problemy z uzyskaniem „uzupełniania argumentów” dla nowych poleceń, prawdopodobnie polecenie compinit jest prawdopodobnie potrzebne, ale ma mechanizm buforowania, który może powodować problem.
Dokumentacja mojej wersji (4.3.10) mówi, że compinit używa buforowanego „pliku zrzutu”
.zcompdump
do przechowywania skompilowanych funkcji uzupełniania w celu przyspieszenia kolejnych wywołań. Unieważnia plik zrzutu tylko wtedy, gdy zauważy zmianę liczby plików ukończenia (fpath
plików elementów rozpoczynających się od#compdef …
lub#autoload …
). Przypuszczalnie instalacja nowego oprogramowania zmieniłaby liczbę takich plików uzupełniających (zakładając, że zainstalowała także swoje pliki autouzupełniania zsh we właściwym miejscu), więc spodziewam się, że zwykłycompinit
zadziała. Jeśli jesteś w sytuacji, w której to nie działa, może być konieczne obejście lub ręczne unieważnienie pliku zrzutu.Aby pominąć za pomocą pliku zrzutu, użyj
compinit -D
; wpłynie to tylko na bieżącą powłokę.Aby odbudować plik zrzutu, usuń go i uruchom ponownie
compinit
:Wpłynie to na bieżącą powłokę, istniejące powłoki, które działają jako zwykłe
compinit
, i wszelkie przyszłe powłoki.źródło
zim
zezwalają na użycie plików zrzutów na hosta. W takim przypadku usuń także$zcompdump_file
razem z.zcompdump
.