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 TAB
una vez para mostrar las posibles finalizaciones, solo modificando lo que he escrito si hay exactamente una finalización. Luego, presionar TAB
una 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 Desktop
y .rstudio-desktop
en 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 Desktop
y .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 h
que esto corresponde a la directories
etiqueta en lugar de a la local-directories
etiqueta que se está utilizando).
Para una fácil reproducibilidad, aquí hay una ~/.zshrc
que reproducirá la situación y el comportamiento descritos anteriormente (probado en una nueva máquina virtual El Capitan con zsh
Homebrew).
zsh 5.3.1
en OS X el problema se reproduce. Es interesante que haya una diferencia entre los sistemas operativos.
zsh 5.3.1
enArch Linux
.cd ~/dktop<tab>
rendimientoscd ~/Desktop
.