J'ai créé un augroup
dans mon .vimrc
contenant plusieurs autocmd
et je dois les activer / désactiver autocommand
à la volée.
L'idée est de créer un mappage (disons F4par exemple) qui activerait ces commandes automatiques une fois pressées et les désactiverait une nouvelle fois sans avoir à sourcener un fichier ou recharger le fichier .vimrc
.
Comment puis je faire ça?
key-bindings
autocmd
statox
la source
la source
else
branche, en exécutantautocmd!
inconditionnellement au début.exists('#TestAutoGroup#BufEnter')
reviendrait après unautocmd!
?(J'ai en fait compris par moi-même mais comme je n'ai pas trouvé de réponse sur ce site, j'ai pensé que cela pourrait être utile pour créer une question auto-répondue )
Pour ce faire, il est possible de créer la fonction suivante et de la placer dans
.vimrc
:La fonction crée une variable utilisée pour déterminer si le groupe a été précédemment activé ou non.
Lorsqu'il n'était pas activé, le groupe est rempli avec les autocommandes souhaitées. Si le groupe était précédemment activé, nous l'utilisons
autocmd!
pour le "réinitialiser", c'est-à- dire en supprimant la commande précédemment entrée.Une documentation pertinente est ici
Enfin, il est possible de créer la cartographie suivante:
utiliser F4pour appeler la fonction.
EDIT : Karl Yngve Lervåg a suggéré une version améliorée de cette fonction qui réduisait le nombre de lignes de code, je pensais qu'il serait bon de garder les deux versions, la première fonctionnant toujours, peut-être plus facile à comprendre par un débutant vimscript comme moi.
Voici la fonction améliorée de Karl, merci beaucoup à lui:
Dans cette version, le groupe est toujours réinitialisé, et s'il n'était pas activé, il est rempli avec les autocommandes souhaitées
la source
Je trouve que le moyen le plus simple est d'utiliser une variable globale. Exemple:
Pour plus d'aide, voir:
la source