Passei pela autocmd.txt
ajuda, mas as informações sobre isso estão dispersas e nem sempre estão presentes (por exemplo, com BufRead
).
Alguém que entende isso bem pode listar a ordem desses eventos - talvez com as condições marcadas entre parênteses, como
WinEnter
BufEnter (if this window is for a different buffer than the current)
e assim por diante, para fácil referência?
Nota (copiada do meu próprio comentário abaixo) : Não estou falando de explicações individuais sobre elas, o que é bom, mas sobre como elas interagem umas com as outras e em que ordem elas acontecem. Por exemplo, WinEnter
diz "O Vim executa os comandos automáticos do BufEnter após os comandos automáticos do WinEnter", TabEnter
diz "Depois de acionar o WinEnter e antes de acionar o evento BufEnter", está tudo espalhado dessa maneira em muitos lugares. E às vezes isso não é mencionado (por exemplo BufRead
, não menciona se é executado após o BufEnter ou antes - talvez um especialista possa inferir isso de alguma outra informação lá, mas eu não posso.
Portanto, minha intenção aqui é crie uma referência única e simples para a ordem desses eventos que pode ser consultada rapidamente por não especialistas,autocmd
especificações de eventos.
fonte
WinEnter
diz "O Vim executa os comandos automáticos do BufEnter após os comandos automáticos do WinEnter",TabEnter
diz "Depois de acionar o WinEnter e antes de acionar o evento BufEnter", está tudo espalhado dessa maneira em muitos lugares. E às vezes isso não é mencionado (por exemploBufRead
, não menciona se é executado após o BufEnter ou antes - talvez um especialista possa inferir isso de alguma outra informação lá, mas eu não posso.autocmd
especificações de eventos.Respostas:
Para concluir a resposta @sundar:
Você pode registrar a ordem dos eventos simplesmente com uma função de registro:
Veja o arquivo completo aqui: https://gist.github.com/nobe4/aa8313fe98ca8821afad
Você pode então
tail -f log
obter uma atividade de eventos de comando automático em tempo real.fonte
Tentei pesquisar no Google com diferentes conjuntos de palavras-chave e encontrei ouro em uma dessas tentativas com este resultado: http://www.ibm.com/developerworks/library/l-vim-script-5/
Especificamente, esta parte é relevante para a pergunta atual:
Ainda não é totalmente abrangente (por exemplo, nenhuma menção a
BufRead
akaBufReadPost
, mas suponho que viria depoisBufReadCmd
), mas é um excelente começo.Uma peça que falta de informação crucial, porém, é como os
FileType
eSyntax
eventos autocmd interagir com este (assumindofiletype
esyntax
já estão em, e um novo arquivo é aberto cujo filetype e sintaxe são conhecidos por Vim).fonte
autocmd
s em vários arquivos não está bem definida. E mesmo com um único arquivo, o pedido mudou algumas vezes com a versão do Vim. Os problemas que isso pode (e causa) para os plug-ins foram discutidos até a morte no vim_dev, e o design geral não será alterado no futuro previsível. Quanto à obtenção de um entendimento abrangente , bem, existem 139 ocorrênciasapply_autocmds
nas fontes do Vim 7.4.827. Boa sorte com isso.autocmd
s no Vim são uma bagunça, acho que não é possível escrever uma referência definitiva, exceto em alguns casos simples. Suponho que todos concordem com "geralmente funciona" e encolhem os ombros quando isso não acontecer. Quanto ao neovim, eu pessoalmente tenho sentimentos mistos sobre o projeto. Eu não olhei o código recentemente; Suponho que você possa obter uma resposta sobre o rastreador de problemas.