por que minhas macros vim param de funcionar às vezes?

5

Às vezes isso acontece comigo, e não consegui descobrir o porquê. Digamos que eu comece a gravar no vim (pressione q) e depois termino e uso as macros algumas vezes. Depois, faço outra coisa, como continuar editando o arquivo. Quero usar as macros novamente, mas desta vez acontece outra coisa, por exemplo, o cursor move uma palavra para trás.

Isso já aconteceu comigo algumas vezes. Por exemplo, hoje inicio uma macro (q 2) e depois a uso (@ 2) algumas vezes. Então, digito algum texto e tento usar as macros novamente (@ 2), mas desta vez o cursor é movido uma palavra para trás quando as macros deveriam formatar algum texto em HTML.

Toda vez que isso acontece comigo, eu tento reproduzi-lo. Eu crio macros fictícias e depois faço a mesma coisa novamente, mas nunca consegui reproduzi-lo à vontade. As macros simplesmente funcionam quando tento reproduzir esse comportamento.

Não fechei ou suspendi o vim em nenhum momento em que isso aconteceu.

Sei que é difícil responder a essa pergunta com as informações fornecidas, mas espero que isso tenha acontecido com alguns de vocês antes e que você tenha conseguido descobrir por que isso acontece. Tenho certeza de que isso é apenas algo que eu não sei sobre o vim.

Buzu
fonte

Respostas:

9

Registradores numerados são usados ​​internamente pelo Vim para comandos como you d.

Você não deve usá-las para gravar suas macros, pois elas são substituídas a cada puxão ou exclusão.

Use registros apara os zquais o Vim não toca.

romainl
fonte
Isso parece bastante lógico. Tenho certeza de que o que está acontecendo é exatamente o que você descreve. Obrigado companheiro.
Buzu
Isso é bem interessante. Parece que as macros são expandidas para o próximo número. De fato, agora existem macros antigas no @ 8, quando o registrei inicialmente no @ 2. Como exatamente isso funciona?
Buzu
Cada vez que você you do conteúdo dos registros numerados é deslocado por um: "0o conteúdo passa "1a ser o conteúdo e assim por diante com a última coisa que você puxou sempre fazendo o primeiro registro "0,. Então, sim, não é realmente uma boa ideia salvar nada lá. Veja :help registerspara mais.
Romainl