Ich verwende oh-my-zsh unter Mac OS X mit homebrew'ed zsh 4.3.12. Ich bin kürzlich über ein seltsames Problem gestolpert. In scripts/not-used
ich habe mehrere .R
Dateien:
breakdowns.R eventloop.R process-largeclients.R process-qt.R
reprocess-pinning.R calculate-qt-error.R generate_decision_tree.R process-net.R
process-scalingexp.R
Wenn ich jedoch ls scripts/not-used/
+ versuche, steht Tabdie erste Vervollständigung ls scripts/not-used/_.R
für _
die Cursorposition. Wenn ich Taberneut drücke , erhalte ich diese seltsame Vervollständigung:
$ ls scripts/not-used/.R
breakdowns.R eventloop.R
Wie kann man dieses hässliche (falsche) Verhalten aufheben?
Die Optionen, die festgelegt werden, sind:
alwaystoend autocd autonamedirs autopushd cdablevars completeinword
correctall extendedglob extendedhistory noflowcontrol
histexpiredupsfirst histignoredups histignorespace histreduceblanks histverify
incappendhistory
interactive login longlistjobs monitor promptsubst
pushdignoredups pushdminus pushdsilent pushdtohome
sharehistory shinstdin zle
zsh
autocomplete
oh-my-zsh
Nikola Knezevic
quelle
quelle
breakdowns.R eventloop.R
falsche Vervollständigung? Deaktivieren Sie diecompleteinword
Option, da dies die Vervollständigung an beiden Enden des Cursors (links und rechts) ermöglicht. Das heißt, wenn ichpac
wie folgt eingebepacman
und ein Befehl aufgerufen wirdarpac
,arpac
wird er in der Liste der Vervollständigungen angezeigt, da die Vervollständigung nicht nur rechts, sondern auf beiden Seiten des Cursors erfolgt.breakdowns.R eventloop.R
ist eine falsche Vervollständigung, im Sinne der Unvollständigkeit. Wenn Sie sich die Liste der Dateien genau ansehen, gibt es mehr als nur diese 2, die mit enden.R
.Antworten:
Das Problem liegt bei der
zstyle
for-Matcher-Liste.Wenn Sie Folgendes hinzufügen
.zshrc
, wird es behoben:Die
e:
(anstelle der Standardeinstellungr:
) erzwingt die Übereinstimmung mit dem Ende der Zeichenfolge.Die Details zu den Optionen finden Sie in den Dokumenten zu ZSH: Completion Matching Control
quelle
Hast du gemerkt, wo es deinen Cursor hinführt? Da alle Dateien mit .R enden, wird der mögliche Vorschlag automatisch an Sie angehängt.
Die Autovervollständigung verwendet "beide Enden", wie von Tshepang beschrieben.
Wenn Sie versuchen, eine Datei ohne den Namen .R in diesen Ordner abzulegen, wird das Bit .R ausgeblendet.
Ehrlich gesagt, Autocomplete benötigt tatsächlich etwas, um eine blinde Verzeichnisannahme "zu vervollständigen".
quelle
Gert kann für die Verlegenheit gut recht sein. Ich vermute jedoch, dass der Grund für die Unvollständigkeit der Dateiliste (breakdowns.R und eventloop.R) darin besteht, dass diese Dateien die einzigen Dateien im aktuellen Arbeitsverzeichnis sind, die als ausführbar markiert sind. Sie können dies mit einem "ls -l" bestätigen und sich die Berechtigungen für so etwas wie rwx ansehen. Wenn Sie nicht "./" oder dieses Verzeichnis explizit in PATH haben, würde ich erwarten, dass diese beiden Dateien auch nicht erscheinen.
quelle