什么';在vim插件中传递未保存的缓冲区的最佳方法是什么?

什么';在vim插件中传递未保存的缓冲区的最佳方法是什么?,vim,plugins,Vim,Plugins,我正在写一个基于clang的vim插件来自动完成;我意识到还有其他插件可以做类似的事情,但它们都不能满足我的特定需求(宏扩展) 无论如何,解析文件的ClangAPI需要一组变量,包括当前打开文件的未保存缓冲区 例如,您同时传入文件的已保存副本和当前未保存的缓冲区,因此您可以(例如)在键入时自动完成,而不是仅在保存操作之后 所以,我的问题是: 获取vim插件中未保存的原始缓冲区并将其传递给外部可执行文件的最佳方法是什么? 突然想到各种各样的解决办法 将当前缓冲区写入临时文件,并将对临时文件的引用传

我正在写一个基于clang的vim插件来自动完成;我意识到还有其他插件可以做类似的事情,但它们都不能满足我的特定需求(宏扩展)

无论如何,解析文件的ClangAPI需要一组变量,包括当前打开文件的未保存缓冲区

例如,您同时传入文件的已保存副本和当前未保存的缓冲区,因此您可以(例如)在键入时自动完成,而不是仅在保存操作之后

所以,我的问题是:

获取vim插件中未保存的原始缓冲区并将其传递给外部可执行文件的最佳方法是什么?

突然想到各种各样的解决办法

  • 将当前缓冲区写入临时文件,并将对临时文件的引用传递给外部exec

  • Python插件和posix_ipc模块创建共享内存段

  • 向可执行文件打开一个流,并将当前缓冲区一次导入一行

  • 通过套接字eclim样式将缓冲区流式传输到可执行文件

  • 我不知道哪一个是最好的选择,或者是否有其他更好的方法


    我喜欢使用共享内存段的想法,纯粹是因为这将使插件速度极快,但我看不到任何方法可以以便携方式实现这一点。

    将缓冲区传递到外部程序的建议方法是
    :w
    ,例如:

    %w !cat -v
    
    确保在
    w
    之间
    是一个空格:
    w具有不同的含义