Ich möchte, dass bei Dateien und Verzeichnissen die Groß- und Kleinschreibung nicht berücksichtigt wird zsh. Nach ein paar Stunden Lesen des Handbuchs habe ich mir Folgendes ausgedacht:
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\_}'
Außerdem möchte ich TABeinmal drücken , um mögliche Abschlüsse anzuzeigen, und nur ändern, was ich eingegeben habe, wenn es genau einen Abschluss gibt. Wenn TABich dann ein zweites Mal drücke, sollte ich in den Modus "Menü vervollständigen" wechseln. Basierend auf den Handbüchern habe ich Folgendes gefunden:
zstyle ':completion:*' menu select
Jetzt funktioniert alles wie es sollte, außer in einem Fall. Ich habe zwei Ordner Desktopund .rstudio-desktopin meinem Home-Verzeichnis. Da ich das setopt globdotsgetan habe , erwarte ich Folgendes:
$ cd ~/dktop<TAB>
mein Befehl wie eingegeben und angezeigt werden als Vervollständigungskandidaten zu verlassen Desktopund .rstudio-desktop. Stattdessen wird es entfernt dktop , sodass ich Folgendes erhalte:
$ cd ~/
Ich habe mir alle relevanten Handbücher, Anleitungen, Stapelaustauschfragen und verschiedene andere Quellen angesehen. Aber was auch immer ich tue, ich kann das nicht zum Laufen bringen.
Interessanterweise funktioniert alles wie erwartet , wenn ich mich im Home-Verzeichnis befinde und Folgendes eingebe:
$ cd dktop<TAB>
Das heißt, es ist nur ein Problem mit nicht führenden Pfadsegmenten (und Sie können sehen, C-x hdass dies dem directoriesTag und nicht dem verwendeten local-directoriesTag entspricht).
Um die Reproduzierbarkeit zu vereinfachen, wird hier eine ~/.zshrcBeschreibung der oben beschriebenen Situation und des Verhaltens aufgeführt (getestet auf einer neuen virtuellen El Capitan-Maschine mit zshvon Homebrew).
zsh 5.3.1OS X reproduziert sich das Problem. Es ist interessant, dass es einen Unterschied zwischen den Betriebssystemen gibt.
zsh 5.3.1aufArch Linux.cd ~/dktop<tab>Ausbeutencd ~/Desktop.