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-used
tengo varios .R
archivos:
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
zsh
autocomplete
oh-my-zsh
Nikola Knezevic
fuente
fuente
breakdowns.R eventloop.R
finalización incorrecta? Intente desactivar lacompleteinword
opción, ya que esto permite completar desde ambos extremos del cursor, izquierda y derecha. Eso significa que si escribopac
comopacman
, y hay un comando llamadoarpac
,arpac
estará en la lista de finalizaciones, ya que la finalización se produce en ambos lados del cursor en lugar de solo a la derecha.breakdowns.R eventloop.R
es 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
.Respuestas:
El problema radica en el
zstyle
lista de matcher.Si agrega lo siguiente a su
.zshrc
, lo solucionará: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
fuente
¿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.
fuente
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.
fuente