Tengo una pequeña molestia con respecto a cómo zshhacer sugerencias completas para mis comandos.
Si escribo el comienzo de un comando que no tengo instalado y tablo presiono, sugeriré la función de finalización que está instalada.
Digamos que quiero ejecutar vimpero no está instalado, sugerirá _vim.
¿Hay alguna forma de apagar esto? ¿O he hecho algo mal en mi configuración?
Todos mis dotfiles son públicos en github.com/henrikbjorn/castle.
zsh
autocomplete
Henrik Bjørnskov
fuente
fuente

Respuestas:
De manera predeterminada, el motor de finalización de zsh solo intenta agregar algo a lo que escribe. Lo configuró para intentar agregar un prefijo también. El motor de configuración de finalización interactiva simple (
compinstall) ofrece esto en "control de coincidencia → finalización de subcadena". Esto inserta una línea como esta en su.zshrc:La
zstyleconfiguración integrada (en su mayoría) de finalización establece. Elmatcher-listestilo de finalización es una lista de formas de intentar en sucesión, deteniéndose cuando hay al menos una coincidencia. La cadena vacía significa la finalización predeterminada (solo sufijos). El conjuro de control de coincidencial:|=* r:|=*significa probar una coincidencia de prefijo*y una coincidencia de sufijo*, es decir, cualquier prefijo y sufijo.Puede prohibir prefijos que comiencen por
_completo. Esto todavía permite completar palabras que comienzan con_, y completar agregando un prefijo, pero el prefijo puede no comenzar con_.Esto se aplica a todas las terminaciones, no solo a las terminaciones de nombres de comandos. No sé cómo restringir esto a los nombres de comandos.
Debería haber una manera de excluir con mayor precisión los nombres de comandos que comienzan con
_, pero no sé cómo. Un primer comienzo es con elignored-patternsestilo de finalización.Esto excluye las coincidencias que comienzan con
_; sin embargo, si no hay coincidencias, zsh intenta nuevamente sin las reglas de ignorar. Lo bueno de esto es que si el comando comenzó con un guión bajo en primer lugar, se completará en este segundo paso. La parte mala es que zsh intentará agregar un guión bajo de todos modos si no hay coincidencias, por lo que si tieneviyviewnovimpresionando Tabdespuésvise ofreceráviyviewno_vim, pero si escribe,vimse completará la oferta_vim.fuente
ignore-patternsfunciona bien para mí, incluso si no hay coincidencias. Solo tenía que asegurarme de quecompleterno contiene_ignored.