我希望能够使用python脚本在每个键的基础上控制vim/neovim。PythonVim模块(vim.feedkeys)中有一个名为feedkeys的函数,这几乎就是我想要的。然而,我还没有弄清楚如何发送功能键、箭头键、pgup、pgdown等,因为它总是完全按照字面意思发送字符串
根据vim feedkeys的文档(vimscript版本,非python)
feedkeys("\<CR>") simulates pressing of the <Enter> key. But feedkeys('\<CR>') pushes 5 characters.
我尝试过的与python对应的东西没有起作用(注意,<CR>
只是一个示例;我知道我可以使用\n来实现这一点。尽管如此,这应该模拟enter键):
vim.feedkeys("\<CR>")
vim.feedkeys("<CR>")
vim.feedkeys("\<CR\>")
vim.call("feedkeys", "\<CR>")
vim.call("feedkeys", '"\<CR>"')
所有这些都是逐字解释的。我想做一些像
vim.feedkeys("\<F5>")
等等。有什么想法吗
很抱歉,这是显而易见的,但它不起作用,因为Python不是VimScript
有关完整的示例,请参见
:h nvim_replace_termcodes()
和:h nvim_feedkeys()
。在<CR>
的情况下,只需字节值13即可您不需要,因为像
"\<CR>"
这样的解释是VimL字符串文本的函数。换句话说,feedkeys("\<CR>")
与(可能)feedkeys("\x0d")
是一样的-函数没有看到区别,解释发生在源代码级别。当然,Python并没有以同样的方式具有相同的特性如果您不想弄清楚F5的转义序列是什么并将其编码到Python脚本中,也许可以使用
vim.eval()
来计算VimL表达式,例如vim.eval(r'feedkeys("\<F5>")')
这并不理想,但它很好地解决了我的问题:
如果这对任何人都有用,我已经编写了一个通用函数来处理
\<>
转义和双引号:相关问题 更多 >
编程相关推荐