instalar - omf shell
¿Cómo puedo proporcionar complementos de pestañas a Fish Shell desde mi propio script? (2)
Debería crear una función de autocompletar pescado para su secuencia de comandos como se propone aquí y ~/.config/fish/completions
o ponerla dentro de su carpeta ~/.config/fish/completions
.
referencia: documentos de peces
Estoy ejecutando Ubuntu 13.10 y Fish 2.1.0. Quiero escribirme un script de Python para hacer algunas tareas desde la línea de comando. El script requerirá argumentos de línea de comando.
¿Cómo puedo escribir mi script de modo que fish pueda solicitar y obtener valores posibles para un argumento dado? La lista de valores potenciales es dinámica. Es decir, se determinará programáticamente (por ejemplo, una lista de nombres de carpetas que coincidan con algunos criterios).
El resultado final que estoy buscando es algo así como:
user@machine ~> myprog argument=fol<TAB>
folder1 folder2 folder3
Donde myprog
es mi archivo de script, argument
es el argumento nombre y folder1
etc. son valores válidos generados por alguna función en mi script.
¿Es posible? y si lo es, cómo?
Adaptado del comentario de zanchey sobre GitHub :
Si tiene un programa myprog
que toma la opción --_completion
, puede escribir un único talón de finalización para myprog
que se vea así:
complete --command myprog --arguments ''(myprog --_completion (commandline -cp)''
Su programa será invocado como myprog --_completion myprog some arguments here
, y puede responder con las terminaciones apropiadas. Debería devolver solo el token actual que se está completando (también podría pasar esto al programa con (commandline -ct)
, o usar el token para sí mismo), seguido opcionalmente por una pestaña y una breve descripción. Múltiples terminaciones se separan con nuevas líneas.
Notas:
-
--_completion
es una convención sugerida por la biblioteca python-selfcompletion , pero puedes usar cualquier cosa que desees, y esta respuesta no es específica de Python - No hay forma de especificar la finalización predeterminada como se describe en dbarnett / python-selfcompletion # 2 (comentario de GitHub) . Definitivamente tendrías que hacer un pequeño tocón para cada comando.
Para las secuencias de comandos de Python específicamente, las siguientes bibliotecas pueden admitir terminaciones de peces en algún momento en el futuro (pero aún no lo hacen):