¿Cómo arreglar la finalización de la pestaña para que no oculte entradas?

17

Estoy usando oh-my-zsh en Mac OS X con homebrew'ed zsh 4.3.12. Recientemente me topé con un problema extraño. En scripts/not-usedtengo varios .Rarchivos:

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

Sin embargo, cuando intento ls scripts/not-used/+ Tabla primera finalización esls scripts/not-used/_.R donde _representa la posición del cursor. Si presiono Tabnuevamente, obtengo esta extraña terminación:

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

¿Cómo deshacer este comportamiento feo (incorrecto)?

Las opciones que se configuran son:

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
fuente
2
¿Cómo es la breakdowns.R eventloop.Rfinalización incorrecta? Intente desactivar la completeinwordopción, ya que esto permite completar desde ambos extremos del cursor, izquierda y derecha. Eso significa que si escribo paccomo pacman, y hay un comando llamado arpac, arpacestará en la lista de finalizaciones, ya que la finalización se produce en ambos lados del cursor en lugar de solo a la derecha.
Alexej Magura
No estaba al tanto de la pregunta ... Entonces, breakdowns.R eventloop.Res una finalización incorrecta, en el sentido de incompleto. Si observa detenidamente la lista de archivos, hay más que solo esos 2, que terminan en .R.
Nikola Knezevic
Traté de crear un grupo de archivos con los mismos nombres que los que enumeró, así como zR, az, .R y z_test.R para fines de prueba: z_test.R no aparecía tratando de completarlo automáticamente, pero z, .R lo haría. Supongo que es una especie de error regex
Dmitri DB
Esto puede estar relacionado con github.com/robbyrussell/oh-my-zsh/issues/1398 , que es un problema antiguo, pero la última versión tiene un código de finalización similar. No intenté solucionar el problema para confirmar.
rjewell

Respuestas:

1

El problema radica en el zstyle lista de matcher.

Si agrega lo siguiente a su .zshrc, lo solucionará:

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

El e:(en lugar del predeterminador: ) fuerza la coincidencia al final de la cadena.

Los detalles de las opciones se pueden encontrar en los documentos de ZSH: Completion Matching Control

Gert
fuente
0

¿Notaste dónde puso tu cursor? Como todos los archivos terminan con .R, se agrega automáticamente la posible sugerencia para usted.

El autocompletado está usando "ambos extremos" como lo describe Tshepang.

Intente colocar un archivo en esta carpeta sin un nombre .R, y verá que ese bit .R desaparece.

Honestamente, el autocompletado realmente necesita algo para "completar", no una suposición de directorio ciego.

Bee Kay
fuente
0

Gert bien podría estar en lo cierto para la solución. Sin embargo, sospecho que la razón de la naturaleza incompleta de la lista de archivos (breakdowns.R y eventloop.R) se debe a que esos archivos son los únicos archivos en el directorio de trabajo actual que están marcados como ejecutables. Puede confirmar esto con un "ls -l" y ver los permisos para algo como rwx. Si no tiene "./" o ese directorio explícitamente en PATH, entonces esperaría que esos dos archivos tampoco aparezcan.

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