Después de instalar un nuevo software, un terminal ya abierto con zsh no sabrá acerca de los nuevos comandos y no puede generar el autocompletado para esos. Aparentemente, abrir un nuevo terminal soluciona el problema, pero ¿se puede reconstruir el índice (o como se llame) para que el autocompletado funcione en el antiguo terminal?
Lo intenté compinit
pero eso no ayudó. Además, ¿hay alguna forma que no sea dependiente de shell? Es bueno tener una manera de verificar la respuesta también (excepto desinstalar algo y reinstalarlo).
Lo que quiero decir es que después de escribir algunos caracteres del nombre de un comando, puedo presionar Tab, y zsh
debería hacer el resto para extraer el nombre completo.
zsh
autocomplete
phunehehe
fuente
fuente
Respuestas:
Para reconstruir el caché de comandos ejecutables, use
rehash
ohash -rf
.Asegúrese de no haber deshabilitado la
hash_list_all
opción (causa aún menos accesos al disco, pero hace que la memoria caché se actualice con menos frecuencia).Si no desea tener que escribir un comando, puede decirle a zsh que no confíe en su caché al completar colocando la siguiente línea en su
~/.zshrc
¹:Hay un costo de rendimiento, pero hoy en día es insignificante en una configuración de escritorio típica. (No lo es si tiene
$PATH
un NFS o un sistema sin RAM).El
zstyle
comando en sí está documentado en lazshmodule
página del manual. Los valores de estilos se documentan en las páginas manzshcompsys
yzshcompwid
, o puede leer la fuente (aquí, de la_command_names
función). Si quería documentación legible ... si encuentra alguna, ¡hágamelo saber!¹ requiere zsh≥4.3.3, gracias Chris Johnsen
fuente
PATH="$PATH"
también haría el trabajo.HASH_LIST_ALL
se muestra como predeterminado en mi documentación.Si tiene problemas para que la "finalización de argumentos" funcione para los nuevos comandos, entonces compinit es probablemente el comando que necesita, sin embargo, tiene un mecanismo de almacenamiento en caché que podría estar causando su problema.
La documentación de mi versión (4.3.10) dice que compinit utiliza un "archivo de volcado" en caché
.zcompdump
, para almacenar funciones de finalización compiladas para acelerar las invocaciones posteriores. Solo invalida el archivo de volcado cuando nota un cambio en el número de archivos de finalización (fpath
archivos de elementos que comienzan con#compdef …
o#autoload …
). Presumiblemente, la instalación de un nuevo software cambiaría el número de dichos archivos de finalización (suponiendo que también instaló sus archivos de autocompletar zsh en el lugar correcto), por lo que esperaría que un simplecompinit
trabajo funcione. Si se encuentra en una situación en la que no funciona, es posible que deba omitir o invalidar manualmente el archivo de volcado.Para omitir el uso del archivo de volcado, use
compinit -D
; Esto solo afectará al shell actual.Para reconstruir el archivo de volcado, elimínelo y vuelva a ejecutar
compinit
:Esto afectará el shell actual, los shells existentes que se ejecutan sin formato
compinit
y cualquier shells futuros.fuente
zim
permiten el uso de archivos de volcado por host. En ese caso, también eliminar$zcompdump_file
junto con.zcompdump
.