Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python vim.swp文件的结构是什么?_Python_Vim - Fatal编程技术网

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

Python vim.swp文件的结构是什么?,python,vim,Python,Vim,应用程序希望将文本输出到vim,并实时了解正在进行的编辑 .swp文件提供了这些信息。有人能提供关于如何读取这个二进制文件的指导吗,比如说,使用Python?我不会依赖交换文件的内容来获得实时更新。它的格式是针对Vim的使用而设计的,除了它的实现之外,它的格式是没有文档记录的。您必须复制算法的大部分内容,并在内部格式发生变化时(无需事先通知)保持这一点 或者,我会使用一种嵌入式语言(例如Python)与希望获得实时更新的外部程序进行交互。例如,Python函数可以在套接字上定期发送整个缓冲区内容

应用程序希望将文本输出到vim,并实时了解正在进行的编辑


.swp文件提供了这些信息。有人能提供关于如何读取这个二进制文件的指导吗,比如说,使用Python?

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


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

感谢所有回复的人

我希望.swp会被文档化,甚至可能是可以访问它的代码,看起来都不是

用Python编写插件的建议可能是最有意义的,我打赌它可能会挂到类似“on_击键”的东西上,并维护一个我能理解的镜像

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


PS:$100对于那些门票来说太多了

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

我感兴趣的主要来源是:

  • 上的Vim General邮件列表线程
  • 关于的Vim官方文档
解析这个需要一点逆向工程,我只能提取某些数据。我想从中得到的只是一些关于已编辑文件状态的基本信息。我的结果如下所示:

$ 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。

open(“yourfile.swp”,“rb”)
?注意:我想修补维姆要比解析交换文件容易得多。@KarolyHorvath:我认为OP使用“shell text out”作为某种俚语的意思“将文本输出到控制台”(想想“我花了100美元买了这些很棒的票”)如果你找不到描述Vim交换文件结构的文档,你可以尝试挖掘源代码。
src/memline.c:ml_recover()
看起来是一个很好的起点。请提供更多的背景信息;你的最终目标是什么?当一个问题仅仅是关于一个小的技术步骤时,很难给出一个好的答案。如果你不告诉我们你为什么要这样做,很容易屈服于。只要
更新计数(默认值200),就会编写交换文件字符是键入的,或者是
updatetime
(默认值4000)毫秒,没有任何输入。因此,它是半实时的,并且实时性如何可以调整。