Creé un augroup
en mi que .vimrc
contiene varios autocmd
y necesito habilitar / deshabilitar estos autocommand
sobre la marcha.
La idea es crear una asignación (digamos, F4por ejemplo) que habilitaría estos comandos automáticos cuando se presionen una vez y los deshabilitará cuando se presionen nuevamente sin tener que buscar un archivo o volver a cargarlos .vimrc
.
¿Cómo puedo hacer eso?
key-bindings
autocmd
statox
fuente
fuente
else
rama, ejecutandoautocmd!
incondicionalmente al principio.exists('#TestAutoGroup#BufEnter')
volvería después de unautocmd!
?(De hecho, lo descubrí yo mismo, pero como no encontré una respuesta en este sitio, pensé que podría ser útil para crear una pregunta con respuesta propia )
Para hacerlo, es posible crear la siguiente función y ponerla en
.vimrc
:La función crea una variable utilizada para determinar si el grupo estaba habilitado previamente o no.
Cuando no estaba habilitado, el grupo se llena con los comandos automáticos deseados. Si el grupo estaba habilitado previamente, lo usamos
autocmd!
para "restablecerlo", es decir, eliminar el comando que ingresó anteriormente.Una documentación relevante está aquí
Finalmente, es posible crear el siguiente mapeo:
usar F4para llamar a la función.
EDITAR : Karl Yngve Lervåg sugirió una versión mejorada de esta función que redujo el número de líneas de código, sentí que sería bueno mantener ambas versiones, la primera todavía funcionando, tal vez más fácil de entender por un debutante vimscript como yo.
Aquí está la función mejorada de Karl, muchas gracias a él:
En esta versión, el grupo siempre se restablece y, si no estaba habilitado, se completa con los comandos automáticos deseados
fuente
Encuentro que la manera fácil es usar una variable global. Ejemplo:
Para más ayuda ver:
fuente