Chcę rozróżniać małe i małe litery dla plików i katalogów w zsh. Po przeczytaniu instrukcji przez kilka godzin, oto co wymyśliłem:
zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
Dodatkowo chcę nacisnąć TABraz, aby wyświetlić możliwe uzupełnienia, modyfikując tylko to, co wpisałem, jeśli jest dokładnie jedno uzupełnienie. Następnie wciśnięcie TABdrugi raz powinno wprowadzić mnie w tryb „uzupełniania menu”. Na podstawie instrukcji wymyśliłem:
zstyle ':completion:*' menu select
Teraz wszystko działa tak, jak powinno, z wyjątkiem jednej okoliczności. Mam dwa foldery Desktopi .rstudio-desktopw moim katalogu domowym. Ponieważ mam setopt globdots, spodziewam się wpisania następującego:
$ cd ~/dktop<TAB>
pozostawić moje polecenie jako wpisane i wyświetlić jako kandydatów do ukończenia Desktopi .rstudio-desktop. Zamiast tego usuwa dktop , pozostawiając mi następujące:
$ cd ~/
Przejrzałem wszystkie odpowiednie podręczniki, przewodniki, pytania dotyczące wymiany stosów i różne inne źródła. Ale cokolwiek robię, nie mogę tego zrobić.
Co ciekawe, jeśli jestem w katalogu domowym i wpisuję następujące, wszystko działa zgodnie z oczekiwaniami:
$ cd dktop<TAB>
Oznacza to, że jest to tylko problem z nieprzedstawionymi segmentami ścieżek (i widać, C-x hże odpowiada to directoriesznacznikowi, a nie local-directoriesużywanemu znacznikowi).
Dla łatwej odtwarzalności, tutaj jest to ~/.zshrc, które odtworzy sytuację i zachowanie opisane powyżej (przetestowane na nowej maszynie wirtualnej El Capitan zshz Homebrew).
zsh 5.3.1systemem OS X problem się powtarza. Interesujące jest to, że istnieje różnica między systemami operacyjnymi.
zsh 5.3.1naArch Linux.cd ~/dktop<tab>dajecd ~/Desktop.