如何使用 Python API 在 neovim 中获取当前缓冲区中的文本?

How to get text in current buffer in neovim using Python API?

我想使用 Python API (pynvim) 为 neovim 制作一个插件。问题是我想获取当前缓冲区的文本,实时更新。我在网上搜索过,但没有找到任何有用的(或可理解的)文档。

您可以使用pynvim 订阅neovim 中的事件。请记住,pynvim 是异步的,但我的示例使用一个简单的 while 循环来演示如何监视缓冲区中的实时变化并获取其内容。

from time import sleep
from pynvim import attach, api

nvim = attach('socket', path='/tmp/nvim')

buffer = nvim.current.buffer

event = api.nvim.Nvim.from_nvim(nvim) # use the loaded nvim session
listen = event.subscribe('TextChangedI') # refer to events https://neovim.io/doc/user/autocmd.html#events

while True:
    sleep(2)
    print(listen)
    # read and print contents of the whole buffer
    for line in range(len(buffer)):
        print(buffer[line])