我正在编写一个 vim 插件,我需要在其中确定所有当前正在区分的文件。那是那些diff
被设置的。我一直在阅读手册,但找不到太多。
是否有可能做到这一点。
这个问题实际上与问题how-to-detect-the-position-of-window-in-vim 相关。在那个问题中,我试图获取窗口的位置,以便检测哪个差异是右边的,哪个是左边的。我得到的解决方案是使用 winnr()
只有当只有 2 个窗口(有差异的窗口)时,该解决方案才能工作。我想让它通用,这样即使在 vim 中打开了多个窗口,我也可以确定哪个在左侧,哪个在右侧。这就是我想解决的问题
- 获取所有列出的缓冲区的列表
- 对于每个缓冲区,确定是否
diff
适用1
于该缓冲区 - 如果
diff
用于1
获取bufwinnr()
它的窗口号。 - 从窗口编号确定哪个是左边的,哪个是右边的。左边的窗口号会更小
- 然后使用当前缓冲区的 winnr 确定当前缓冲区(在其中
alt-left
按下 `alt-right`)是左还是右。
现在缺少的部分是 1 和 2。对于 1 ls 可以使用,但我需要解析它的输出。是否有一种直接的方法来获取所有列出的缓冲区的列表。然后有没有办法检查该缓冲区diff
是否为 1。
任何有关更简单解决方案的建议也值得赞赏。