J'ai parcouru l' autocmd.txt
aide, mais les informations à ce sujet sont dispersées et pas toujours présentes (par exemple avec BufRead
).
Quelqu'un qui comprend bien cela pourrait-il énumérer l'ordre de ces événements - avec peut-être les conditions marquées entre parenthèses, comme
WinEnter
BufEnter (if this window is for a different buffer than the current)
et ainsi de suite, pour une référence facile?
Remarque (copiée à partir de mon propre commentaire ci-dessous) : Je ne parle pas d'explications individuelles à leur sujet, qui sont OK, mais de la façon dont ils interagissent les uns avec les autres et dans quel ordre ils se produisent. Par exemple., WinEnter
Dit "Vim exécute les autocommandes BufEnter après les autocommandes WinEnter", TabEnter
dit "Après avoir déclenché WinEnter et avant de déclencher l'événement BufEnter", tout est dispersé comme ceci dans de nombreux endroits. Et parfois, ce n'est pas du tout mentionné (par exemple, BufRead
ne mentionne pas s'il fonctionne après BufEnter ou avant - peut-être qu'un expert peut le déduire à partir d'autres informations là-bas, mais je ne peux pas.
Donc, mon intention ici est de créer une référence unique et simple pour l'ordre de ces événements qui peut être consultée rapidement par des non-experts,autocmd
spécifications de l'événement.
la source
WinEnter
Dit "Vim exécute les autocommandes BufEnter après les autocommandes WinEnter",TabEnter
dit "Après avoir déclenché WinEnter et avant de déclencher l'événement BufEnter", tout est dispersé comme ceci dans de nombreux endroits. Et parfois, cela n'est pas du tout mentionné (par exemple,BufRead
ne mentionne pas s'il fonctionne après BufEnter ou avant - peut-être qu'un expert peut le déduire d'une autre information là-bas, mais je ne peux pas.autocmd
spécifications d'événements.Réponses:
Pour compléter la réponse @sundar:
Vous pouvez enregistrer l'ordre des événements simplement avec une fonction de journalisation:
Voir le fichier complet ici: https://gist.github.com/nobe4/aa8313fe98ca8821afad
Vous pouvez alors
tail -f log
et vous obtenez une activité d'événements d'autocommande en temps réel.la source
J'ai essayé de googler pour cela avec différents ensembles de mots clés, et j'ai trouvé l'or sur une telle tentative avec ce résultat: http://www.ibm.com/developerworks/library/l-vim-script-5/
Plus précisément, cette partie est pertinente pour la question actuelle:
Ce n'est pas encore tout à fait complet (par exemple, aucune mention de
BufRead
akaBufReadPost
, mais je suppose que cela viendrait aprèsBufReadCmd
), mais c'est un excellent début.Une information manquante cruciale est cependant la façon dont les événements
FileType
etSyntax
autocmd interagissent avec cela (en supposantfiletype
etsyntax
sont déjà activés , et un nouveau fichier est ouvert dont le type de fichier et la syntaxe sont connus de Vim).la source
autocmd
s sur plusieurs fichiers n'est pas bien défini. Et même avec un seul fichier, la commande a changé plusieurs fois avec la version de Vim. Les problèmes que cela peut (et font) causer aux plugins ont été discutés à mort sur vim_dev, et la conception globale ne changera pas dans un avenir prévisible. Quant à obtenir une compréhension globale , eh bien, il y a 139 occurrences deapply_autocmds
dans les sources de Vim 7.4.827. Bonne chance avec ça.autocmd
s dans Vim sont un gâchis, je ne pense pas qu'il soit réellement possible d'écrire une référence définitive, à l'exception de quelques cas simples. Je suppose que tout le monde se contente de "généralement travailler" et hausse les épaules quand ce n'est pas le cas. Quant aux neovim, j'ai personnellement des sentiments mitigés sur le projet. Je n'ai pas regardé le code récemment; Je suppose que vous pouvez obtenir une réponse sur leur traqueur de problème.