我正在编写一个vim插件,需要确定当前正在进行diff的所有文件。也就是那些设置了
请问这个有可能实现吗?
这个问题实际上与如何检测vim窗口位置相关。在那个问题中,我试图获取窗口位置,以便检测哪一个是右边的diff,哪一个是左边的diff。我得到的解决方案是使用winnr()。
该解决方案仅适用于只有两个窗口(正在进行diff的窗口)。我想让它通用,即使在vim中打开了多个窗口,也可以确定哪个是左边的,哪个是右边的。
这是我考虑解决问题的方式:
1. 获取所有列出的缓冲区列表 2. 对于每个缓冲区,确定是否为其设置了
现在缺少的是1和2。对于1,可以使用ls,但我需要解析其输出。有没有一种简单的方法来获取所有列出的缓冲区列表?然后有没有一种方法来检查该缓冲区是否设置了
也欢迎提供更简单的解决方案的建议。
diff
的文件。我一直在查阅手册,但没有找到太多信息。请问这个有可能实现吗?
这个问题实际上与如何检测vim窗口位置相关。在那个问题中,我试图获取窗口位置,以便检测哪一个是右边的diff,哪一个是左边的diff。我得到的解决方案是使用winnr()。
该解决方案仅适用于只有两个窗口(正在进行diff的窗口)。我想让它通用,即使在vim中打开了多个窗口,也可以确定哪个是左边的,哪个是右边的。
这是我考虑解决问题的方式:
1. 获取所有列出的缓冲区列表 2. 对于每个缓冲区,确定是否为其设置了
diff
3. 如果为该缓冲区设置了diff
,则使用bufwinnr()
获取其窗口号。
4. 从窗口号确定哪个是左边的,哪个是右边的。左边的窗口号较小。
5. 然后使用当前缓冲区的winnr确定当前缓冲区(按下alt-left
`alt-right`)是左边还是右边。现在缺少的是1和2。对于1,可以使用ls,但我需要解析其输出。有没有一种简单的方法来获取所有列出的缓冲区列表?然后有没有一种方法来检查该缓冲区是否设置了
diff
?也欢迎提供更简单的解决方案的建议。