vim .swp文件的结构是什么?

时间:2015-03-28 12:24:45

标签: python vim

应用程序希望将文本外壳发送到vim并实时了解正在进行的编辑。

.swp文件提供此信息。任何人都可以提供有关如何使用Python读取此二进制文件的指导吗?

3 个答案:

答案 0 :(得分:2)

当我编写查看.swp内容的ls.swp工具(其中包含大量文档的perl脚本)时,我对.swp文件格式进行了自己的调查。

我感兴趣的主要来源是:

解析这需要一些逆向工程,我只能提取某些数据。我想要摆脱的只是关于编辑文件状态的一些基本信息。我的结果如下:

$ ls.swp .ls.swp.sw*
.ls.swp.swo:adamhotep@tabasco:~/git/misc-scripts/ls.swp (running) 85d ago
.ls.swp.swp:adamhotep@tabasco:~/git/misc-scripts/ls.swp 85d ago

我相当肯定你不会得到任何实时数据,因为它只是一大堆磁盘I / O供vim维护。

答案 1 :(得分:1)

我不会依赖交换文件内容来获取实时更新。它的格式适合Vim的用途,除了它的实现之外,它的格式没有记录。您必须复制算法的大部分内容,并在内部格式发生变化时保持这一点(不事先通知)。

或者,我会使用其中一种嵌入式语言(例如Python)与想要获得实时更新的外部程序进行交互。例如,Python函数可以定期发送套接字上的整个缓冲区内容。

答案 2 :(得分:0)

感谢所有回复的人。

我希望.swp会被记录下来,甚至可以访问它的代码,似乎没有。

在Python中编写插件的建议可能最有意义,我敢打赌可以挂钩像'on_keystroke'这样的东西并保持一个我能理解的镜像。

'shell out',如'将此文本块写入临时文件,在vim中打开该文件,当vim退出时,将临时文件内容写入替换文本块'

PS:100美元对于那些门票来说太过分了