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 TAB
einmal drücken , um mögliche Abschlüsse anzuzeigen, und nur ändern, was ich eingegeben habe, wenn es genau einen Abschluss gibt. Wenn TAB
ich 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 Desktop
und .rstudio-desktop
in meinem Home-Verzeichnis. Da ich das setopt globdots
getan habe , erwarte ich Folgendes:
$ cd ~/dktop<TAB>
mein Befehl wie eingegeben und angezeigt werden als Vervollständigungskandidaten zu verlassen Desktop
und .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 h
dass dies dem directories
Tag und nicht dem verwendeten local-directories
Tag entspricht).
Um die Reproduzierbarkeit zu vereinfachen, wird hier eine ~/.zshrc
Beschreibung der oben beschriebenen Situation und des Verhaltens aufgeführt (getestet auf einer neuen virtuellen El Capitan-Maschine mit zsh
von Homebrew).
quelle
zsh 5.3.1
aufArch Linux
.cd ~/dktop<tab>
Ausbeutencd ~/Desktop
.zsh 5.3.1
OS X reproduziert sich das Problem. Es ist interessant, dass es einen Unterschied zwischen den Betriebssystemen gibt.Antworten:
Eine mögliche Lösung ist:
Dadurch wird die Registerkarte
~/
auf den absoluten Pfad erweitert.quelle
cd /Users/raxod502/dktop
, und die Vervollständigung ist deaktiviert.~/
auf den absoluten Pfad die Fuzzy-Vervollständigung funktionieren würde. Es schien einer der Fälle zu sein, in denen das Problem darin besteht, dass es einmal ausgewertet wird, aber Sie es tatsächlich zweimal auswerten müssen, um zu funktionieren. Wenn Sie also den absoluten Pfad anstelle von haben,~/
würde dies bedeuten, dass Sie nur eine Auswertung benötigen. Aber Mist, es tut mir leid, ich habe vergessen, dass bindkey alte Bindungen ersetzt, und ich kann nichts finden, was besagt, ob es überhaupt möglich ist, zwei Funktionen an eine Taste zu binden. Funktioniert Ihre Vervollständigung ohne meinen Bindkey wie vorgesehen, wenn absolute Pfade angegeben werden?~/dktop
oder ist/Users/raxod502/dktop
. das ergebnis ist das selbe, nämlich dasdktop
gelöscht wird wenn ich die tabulatortaste drücke.