【问题标题】:How to get text in current buffer in neovim using Python API?如何使用 Python API 在 neovim 的当前缓冲区中获取文本?
【发布时间】:2021-09-03 09:59:13
【问题描述】:

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

【问题讨论】:

  • 这是怎么回事?我正在尝试类似的东西,但文档真的很糟糕
  • @soyunewok 是的,我放弃了。虽然我认为你可以在 neovim gitter 中询问
  • 我发现了一些东西,目前检测到我输入的时间,但我仍然没有捕获文本。你还有兴趣吗?
  • @soyunewok 随时根据需要调整我的答案。它主要是让你做你想做的事。

标签: python neovim


【解决方案1】:

您可以使用 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])

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2014-12-11
    相关资源
    最近更新 更多