Comment corriger l'achèvement de l'onglet pour qu'il ne cache pas les entrées?

17

J'utilise oh-my-zsh sur Mac OS X avec homebrew'ed zsh 4.3.12. Je suis récemment tombé sur un problème étrange. Dans scripts/not-usedj'ai plusieurs .Rfichiers:

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

Cependant, lorsque j'essaie ls scripts/not-used/+ Tabla première complétion est l' ls scripts/not-used/_.Rendroit où _représente la position du curseur. Si j'appuie à Tabnouveau, j'obtiens cet achèvement bizarre:

$ ls scripts/not-used/.R                                                                          
breakdowns.R  eventloop.R

Comment désamorcer ce vilain (mauvais) comportement?

Les options définies sont les suivantes:

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
Nikola Knezevic
la source
2
comment est l' breakdowns.R eventloop.Rachèvement incorrect? Essayez de désactiver l' completeinwordoption, car cela permet de terminer les deux extrémités du curseur, à gauche et à droite. Cela signifie que si je tape paccomme dans pacman, et qu'il y a une commande appelée arpac, alors arpacsera dans la liste des achèvements, car l'achèvement se produit des deux côtés du curseur au lieu de seulement à droite.
Alexej Magura
Je n'étais pas au courant de la question ... Donc, breakdowns.R eventloop.Rc'est un achèvement incorrect, dans le sens de l'incomplétude. Si vous regardez attentivement la liste des fichiers, il y a plus que ces 2, se terminant par .R.
Nikola Knezevic
J'ai essayé de toucher à l'existence d'un tas de fichiers avec les mêmes noms que ceux que vous avez répertoriés ainsi qu'un zR, az, .R et un z_test.R à des fins de test - z_test.R ne se présenterait pas en essayant de le compléter automatiquement, mais z, .R le ferait. Deviner que c'est une sorte d'incident regex
Dmitri DB
Cela peut être lié à github.com/robbyrussell/oh-my-zsh/issues/1398 , qui est un ancien problème, mais la dernière version a un code d'achèvement similaire. Je n'ai pas tenté de contourner ce problème pour confirmer.
rjewell

Réponses:

1

Le problème réside dans la zstyleliste de correspondance for.

Si vous ajoutez ce qui suit à votre .zshrc, cela le réparera:

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'e:|[._-]=* e:|=*' 'l:|=* e:|=*'

Le e:(au lieu de la valeur par défaut r:) force la correspondance à la fin de la chaîne.

Les détails des options se trouvent dans les documents ZSH: Completion Matching Control

Gert
la source
0

Avez-vous remarqué où il a placé votre curseur? Étant donné que tous les fichiers se terminent par .R, il ajoute automatiquement la suggestion possible pour vous.

La saisie semi-automatique utilise "les deux extrémités" comme décrit par Tshepang.

Essayez de déposer un fichier dans ce dossier sans nom .R, et vous verrez que le bit .R disparaîtra.

Honnêtement, la saisie semi-automatique a réellement besoin de quelque chose pour "compléter" et non pas une hypothèse de répertoire aveugle.

Bee Kay
la source
0

Gert pourrait bien avoir raison pour le correctif. Cependant, je soupçonne que la raison de la nature incomplète de la liste des fichiers (pannes.R et eventloop.R) est due au fait que ces fichiers sont les seuls fichiers du répertoire de travail actuel qui sont marqués comme exécutables. Vous pouvez le confirmer avec un "ls -l" et regarder les autorisations pour quelque chose comme rwx. Si vous n'avez pas "./" ou ce répertoire explicitement dans PATH, je m'attendrais à ce que ces deux fichiers n'apparaissent pas non plus.

 8 -rwxr--r-- 1 userbob    groupbob      4420 May 28 15:55 filebob.R
Voltaire
la source