Estou tentando fazer a seguinte combinação de teclas funcionar:
vim.keymap.set("n", "<C-Enter>", ":MoltenEvaluateOperator<CR> ib", { desc = "evaluate operator" })
Para contexto, configurei o molten-nvim de acordo com https://github.com/benlubas/molten-nvim/blob/main/docs/Notebook-Setup.md , e tudo parece funcionar bem. Quando eu digito :MoltenEvaluateOperator
seguido de enter e ib
ele faz exatamente o que eu espero; :MoltenEvaluateOperator
é executado com o ib
"motion".
Então, eu esperava que eu também pudesse criar uma combinação de teclas para executar tudo isso para mim, já que eu sempre usarei esse comando em combinação com ib
. Você pode ver a combinação de teclas que eu criei acima.
No entanto, não funciona. Parece que o i
faz o nvim entrar no modo de inserção, que é seguido por b
e subsequentemente também g@
. Isso é completamente inesperado, pois o nvim não faz isso quando eu digito manualmente a mesma sequência de teclas.
Eu também tentei:
vim.keymap.set("n", "<C-Enter>", ":MoltenEvaluateOperator<CR><Up>", { desc = "evaluate operator" })
mas também apenas moveria o cursor para cima, e não executaria :MoltenEvaluateOperator
o <Up>
movimento.
Alguém tem alguma ideia do que está acontecendo aqui? Como eu poderia fazer isso realmente funcionar?
O problema é que o plugin chama
feedkeys()
internamente.No Vim, todo o mapeamento é anexado à fila de entrada. Então o Vim o executa avançando até
feedkeys()
o qual anexa seu argumento (g@
) após a parte restante do mapeamento (ib
). E então você obtémibg@
em vez dog@ib
que obteria se digitado manualmente.O que fazer? (1) Use feedkeys('ib') você mesmo para enganá-lo; ou (2) levante um problema, para que eles coloquem
i
um sinalizador na chamada feedkeys ("insert" em vez de "append"); ou (3) pare de usar plugins de baixa qualidade (na minha opinião, qualquer plugin que use feedkeys já é suspeito, mas se fizer isso incorretamente, vai direto para a lixeira).