Tengo una pequeña molestia con respecto a cómo zsh
hacer sugerencias completas para mis comandos.
Si escribo el comienzo de un comando que no tengo instalado y tab
lo presiono, sugeriré la función de finalización que está instalada.
Digamos que quiero ejecutar vim
pero 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
zstyle
configuración integrada (en su mayoría) de finalización establece. Elmatcher-list
estilo 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-patterns
estilo 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 tienevi
yview
novim
presionando Tabdespuésvi
se ofrecerávi
yview
no_vim
, pero si escribe,vim
se completará la oferta_vim
.fuente
ignore-patterns
funciona bien para mí, incluso si no hay coincidencias. Solo tenía que asegurarme de quecompleter
no contiene_ignored
.