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

时间:2011-12-27 00:22:48

标签: vim plugins

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

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

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

所以,我的问题是:

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

想到各种解决方案,例如

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

  2. Python插件和posix_ipc模块,用于创建共享内存分区。

  3. 打开可执行文件的流,并将当前缓冲区一次一行地传送到其中。

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

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

    我喜欢使用共享内存段的想法,纯粹是因为这会让插件变得非常快,但我看不到以便携方式做到这一点。

1 个答案:

答案 0 :(得分:2)

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

%w !cat -v

请确保w!之间是空格:w!具有不同的含义。