如何获取vim中当前正在比较的文件列表

2024-01-02

我正在编写一个 vim 插件,在其中我需要确定当前正在比较的所有文件。这就是那些diff已设置。我已经仔细阅读了手册,但找不到太多内容。

是否有可能做到这一点。

这个问题实际上与问题相关如何检测 vim 中窗口的位置 https://stackoverflow.com/questions/2473678/how-to-detect-the-position-of-window-in-vim。 在这个问题中,我试图获取窗口的位置,以便检测哪个差异是正确的,哪个是左侧的。这solution https://stackoverflow.com/questions/2473678/how-to-detect-the-position-of-window-in-vim/2474745#2474745我得到的是使用 winnr()

该解决方案仅在只有 2 个窗口(有差异的窗口)时才有效。我想让它通用,这样即使在 vim 中打开多个窗口,我也可以确定哪个在左边,哪个在右边。 这就是我想解决的问题

  1. 获取所有列出的缓冲区的列表
  2. 对于每个缓冲区,确定是否diff is 1为了那个原因
  3. If diff is 1 use bufwinnr()获取它的窗口号。
  4. 根据窗口编号确定哪一扇是左边的,哪一扇是右边的。左边的窗口号较小
  5. 然后判断当前缓冲区是否(其中alt-left`alt-right` 被按下)使用当前缓冲区的 winnr 向左或向右。

现在缺少的部分是 1 和 2。对于 1 ls 可以使用,但我需要解析它的输出。有没有一种直接的方法来获取所有列出的缓冲区的列表。然后有没有办法检查该缓冲区是否存在diff是否为 1。

任何有关更简单解决方案的建议也将受到赞赏。


  1. 循环遍历所有可能的缓冲区编号0 to bufnr('$')并使用检查该缓冲区是否存在bufexists(nr).
  2. 使用保存当前缓冲区编号let curbuf=bufnr('%').
  3. 对于每个现有的缓冲区做execute "buffer ".bufnumber并检查&diff多变的。记住两个数字,但不检查bufwinnr().
  4. Do execute "buffer ".curbuf.
  5. 最后打电话bufwinnr(nr)对于步骤 3 中找到的两个数字。

UPD:另一种解决方案

let g:wlist={"0": [], "1":[]}
windo call add(g:wlist[&diff], bufnr('%'))
let g:diffbuffers=g:wlist.1
" here you have list of buffers with &diff option set in g:diffbuffers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取vim中当前正在比较的文件列表 的相关文章

随机推荐

  • Highcharts 极坐标图:在相交区域系列上应用渐变颜色

    我正在尝试在我的 React 项目中的 Highcharts 极坐标图中的 2 个系列的相交区域应用渐变颜色 这是我的 JSFiddle 链接 https jsfiddle net pgkk s29d51zt 604 https jsfid
  • TextBlock 画笔给出的颜色不正确

    我有一个 TextBlock 和一个 Rectangle 它们都位于一个空的 WPF4 窗口中 TextBlock 的前景和矩形的 Fill 都设置为 SolidColorBrush 其值为 80800000 它看起来是这样的 矩形的颜色是
  • Paypal 沙箱 API 内部错误

    过去几个月我一直在使用 Paypal Merchant SDK 和 Sandbox 凭证 一切工作正常 但今天 我遇到了这个奇怪的问题 每当我调用 SetExpressCheckout 的 API 时 我都会得到由于内部错误 交易失败有错误
  • 授予角色时出现缺少权限错误

    我在尝试向服务器管理员授予角色时遇到问题 对于常规权限 它工作正常 但如果它是服务器管理员角色 或具有权限的其他角色 即使我是所有者 它也会给出以下错误 discord ext commands errors CommandInvokeEr
  • 快速关系数据库,可与 Python 简单使用[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 对于我的链接抓取程序 用 python3 3 编写 我想使用数据库来存储大约 100 000 个网站
  • Java 重写 hashCode() 方法有任何性能问题吗?

    如果我会覆盖hashCode 方法会降低应用程序的性能 我在应用程序的许多地方重写了这个方法 是的 如果 hashCode 方法的实现方式不好 则可能会降低散列集合的性能 hashCode 方法的最佳实现应该为唯一对象生成唯一的 hashC
  • Android webview 中的缓存

    Android webview中加载移动网页和非移动网页哪一种更快 加载缓存还是根本不加载 加载它的推荐样式是什么 现在 当我不在所有非移动网站上加载缓存时 加载速度比在本机浏览器中加载它们时要慢得多 不要使用这些 viewer getSe
  • Rails 使用什么 Ruby 技术来使我的控制器方法呈现视图?

    只是好奇是否有人知道在 Rails 框架中使用什么 Ruby 技术来完成以下任务 如果我不写 比如说 index方法在 Rails 控制器上 如果 URL 与该路由匹配 Rails 仍将呈现索引视图文件 这是有道理的 因为我的控制器继承自父
  • 对 C# 类中的属性进行排序

    我们需要解析的文件格式如下 v1 000 sammy endpoint blah 它是供应商向我们提供的有序固定宽度格式 因此这 5 个字段中的每一个都映射到类中的特定属性 实际格式有 gt 30 我想通过将序列应用于属性来使用反射来解析它
  • pandas:基于开始/结束日期的聚合

    它实际上是一个反聚合 因为我有一个这样构造的数据集 id type first year last year A t1 2009 2014 A t1 2010 2015 B t1 2007 2009 B t2 2008 2011 但我需要按
  • 处理 DDD 中的嵌套聚合

    我刚刚开始使用 DDD 并且在弄清楚如何适应数据的关系性质时遇到了一些困难 我拥有我相信会被视为我的聚合根的东西 但聚合也有它自己的聚合 不想违反德墨忒尔定律 我想知道我的想法是否错误 并希望一些 DDD 专家可以提供一些见解 我的聚合根是
  • 将 tibble 转换为带有列标题的数据框

    我从 Excel 工作表导入数据 如下所示 F4 Off lt readxl read xlsx myExcel xlsx sheet Offline col names TRUE range I1 L285 F4 Off F4 On lt
  • React - 替换 props.children 中的子组件

    正如在另一个中看到的question https stackoverflow com questions 32370994 how to pass props to this props children 可以使用 React Childr
  • Laravel - 使用哪个缓存驱动程序?

    这是我第一次处理缓存 尽管我浏览了 laravel 文档和其他各种网站以获取如何设置它的说明 但我仍然有点不知所措 不知道该使用哪个以及有什么不同缓存驱动程序可以 我当前的情况是 我有一个日程安排系统 您可以在其中创建本周课程的 pdf 文
  • 如何从电子中的 new BrowserWindow() 获取窗口对象?

    有没有办法重用窗口对象 这可能是必要的 因为相应的窗口可能是动态生成的 var electron require electron var app electron app var BrowserWindow electron Browse
  • 处理器在等待主内存读取时做什么

    假设 L1 和 L2 缓存请求导致未命中 处理器是否会停止运行 直到访问主内存为止 我听说过切换到另一个线程的想法 如果是的话 用什么来唤醒停滞的线程 现代 CPU 中会同时发生很多很多事情 当然 任何需要内存访问结果的事情都无法进行 但可
  • OpenCV+Eclipse+Android:错误org.opencv.video Video.java

    我一直在安装 OpenCV 这是教程 http docs opencv org doc tutorials introduction android binary package android binary package html 我阅
  • UWP:应用程序栏/命令栏中的图标大小

    我应该使用什么尺寸的图标应用栏 命令栏 https msdn microsoft com en us windows uwp controls and patterns app bars 我找不到东西磁贴和图标资源指南 https msdn
  • 如何更改ggplot2中图例标签上的科学记数法

    我编写此代码是为了创建地图 ggplot data Canada2015 Import 3 borders database world colour grey60 fill grey90 geom polygon aes x long y
  • 如何获取vim中当前正在比较的文件列表

    我正在编写一个 vim 插件 在其中我需要确定当前正在比较的所有文件 这就是那些diff已设置 我已经仔细阅读了手册 但找不到太多内容 是否有可能做到这一点 这个问题实际上与问题相关如何检测 vim 中窗口的位置 https stackov