Estoy jugando con el accept-line
widget y no obtengo los resultados que quiero. Quiero inspeccionar (y registrar) lo que está sucediendo con la línea de aceptación al encontrar la función zsh subyacente.
Según tengo entendido, los widgets zle existen en su propio espacio de nombres separado con las zle -N
claves de asignación de operación al valor en este espacio de nombres y la operación zle -A
duplica las asignaciones.
Hice una búsqueda bastante detallada dezshzlepágina del manual y busqué un poco en Google, pero lo mejor que se me ocurrió es lo siguiente que utiliza la zle -l
operación.
zle -l | grep '^accept-line ' | grep -Eo '\(.*\)' | tr -d '()'
¿Hay algo que no dependa tan directamente del formato de salida de zle -l
.
Respuesta1
Hay una matriz especial llamada widgets
que contiene los nombres de todos los widgets y funciones asociadas a ellos, así que intente
echo $widgets[accept-line]
Sin embargo, tenga en cuenta que algunos widgets se definen internamente y todo lo que obtendrá es una palabra.incorporado, pero a juzgar por tugrepordenar algún script obtenido en.zshrcsobrescribió ese widget, por lo que debería obtener un resultado significativo.
Por cierto, si desea enumerar todos los widgets disponibles y sus funciones, utilice (kv)
la bandera:
echo ${(kv)widgets}