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ąć TAB
raz, 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 TAB
drugi 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 Desktop
i .rstudio-desktop
w 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 Desktop
i .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 directories
znacznikowi, a nie local-directories
uż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 zsh
z Homebrew).
zsh 5.3.1
systemem OS X problem się powtarza. Interesujące jest to, że istnieje różnica między systemami operacyjnymi.
zsh 5.3.1
naArch Linux
.cd ~/dktop<tab>
dajecd ~/Desktop
.