¿Cómo puedo acceder mediante programación a la finalización de zsh?


8

zsh tiene un sistema de finalización, activado presionando tab:

llama@llama:~$ git st<Tab>
Completing main porcelain command
stash      -- stash away changes to dirty working directory
status     -- show working-tree status
Completing plumbing internal helper command
stripspace -- filter out empty lines

Todo lo que he podido descubrir es que esto proviene del script /usr/share/zsh/functions/Completion/Unix/_git, donde se _gitllama el comando de finalización.

Suponiendo que conozco el nombre de la función de finalización (p _git. Ej. ), ¿Cómo podría obtener el resultado de lo que sucedería si ingresara cierta cadena y presiono la pestaña? Esencialmente, estoy tratando de tomar una entrada de ex. git sty obtenga el resultado anterior (mediante programación, de un script).

Hay muchas otras preguntas existentes sobre esto para bash, pero no he encontrado nada que explique cómo lograr esto con zsh.


Respuestas:


2

Esto se puede hacer usando zsh-capture-complete . El archivo README.md del repositorio proporciona varios ejemplos:

capture.zsh 'vim -'
capture.zsh 'vim --'
capture.zsh 'vim --r'
capture.zsh 'echo *('
capture.zsh 'scp hostname:'

Tenga en cuenta que el paquete en sí mismo establece que es una prueba de concepto y, como tal, puede contener errores en su ejecución.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.