Quiero finalización difusa entre mayúsculas y minúsculas para archivos y directorios en zsh. Después de leer el manual durante unas horas, esto es lo que se me ocurrió:
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\_}'
Además, quiero presionar TABuna vez para mostrar las posibles finalizaciones, solo modificando lo que he escrito si hay exactamente una finalización. Luego, presionar TABuna segunda vez debería ponerme en el modo "finalización del menú". Basado en los manuales, se me ocurrió esto:
zstyle ':completion:*' menu select
Ahora todo funciona como debería, excepto en una circunstancia. Tengo dos carpetas Desktopy .rstudio-desktopen mi directorio personal. Como tengo setopt globdots, espero escribir lo siguiente:
$ cd ~/dktop<TAB>
dejar mi comando como se ingresó, y mostrar como candidatos de finalización Desktopy .rstudio-desktop. En cambio, se elimina dktop , dejándome con lo siguiente:
$ cd ~/
He examinado todos los manuales, guías, preguntas de Stack Exchange relevantes y varias otras fuentes relevantes. Pero haga lo que haga, no puedo hacer que esto funcione.
Curiosamente, sin embargo, si estoy en el directorio de inicio y escribo lo siguiente, entonces todo funciona como se esperaba:
$ cd dktop<TAB>
Es decir, solo es un problema con segmentos de rutas no líderes (y puede ver C-x hque esto corresponde a la directoriesetiqueta en lugar de a la local-directoriesetiqueta que se está utilizando).
Para una fácil reproducibilidad, aquí hay una ~/.zshrcque reproducirá la situación y el comportamiento descritos anteriormente (probado en una nueva máquina virtual El Capitan con zshHomebrew).
zsh 5.3.1en OS X el problema se reproduce. Es interesante que haya una diferencia entre los sistemas operativos.
zsh 5.3.1enArch Linux.cd ~/dktop<tab>rendimientoscd ~/Desktop.