我正在编写一个vim插件,我需要确定当前正在分散的所有文件。那是diff
设置的那个。我一直在阅读手册,但找不到多少。
是否可以这样做。
这个问题实际上与问题how-to-detect-the-position-of-window-in-vim有关。 在那个问题中,我试图获得窗口的位置,以便检测哪个差异是正确的,哪个是剩下的。我得到的solution是使用winnr()
该解决方案只有在只有2个窗口(被扩散的窗口)时才能工作。我想让它变得通用,这样即使在vim中打开多个窗口,我也可以确定哪一个在左边,哪一个在右边。 这就是我想解决问题的方法
diff
是否为1
diff
为1
,请使用bufwinnr()
获取窗口编号。alt-left
`alt-right`被按下)是左还是右。现在丢失的部分是1和2.可以使用1 ls但我需要解析它的输出。是否有直接的方法来获取所有列出的缓冲区列表。然后有办法检查缓冲区diff
是否为1。
对于更简单的解决方案的任何建议也表示赞赏。
答案 0 :(得分:3)
0
到bufnr('$')
的所有可能的缓冲区编号,并使用bufexists(nr)
检查此缓冲区是否存在。let curbuf=bufnr('%')
保存当前缓冲区编号。execute "buffer ".bufnumber
并检查&diff
变量。记住两个数字,但不要检查bufwinnr()
。execute "buffer ".curbuf
。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