在 ViM 中,Buffer 0 是什么?

6

vim命令buflisted(0)bufexists(0)会在只打开单个文件时返回true。

我不理解这个,因为ls的输出将该文件显示为缓冲区1(buflisted(1)bufexists(1)也返回true)。如果我尝试在缓冲区0上执行任何缓冲区操作,我会收到错误消息“Zero count”。

这似乎是一个特殊的缓冲区,但我找不到任何信息告诉我缓冲区0用于什么。有人可以帮忙吗?

谢谢!


现在是查看源代码的好时机 :) - sehe
1个回答

5

:help bufname()中有关于0的解释。它是当前缓冲区的“备用缓冲区”。


2
我找不到那份文档,但从代码来看是正确的:if (nr == 0) nr = curwin->w_alt_fnum;(在buflist_findnr中)。 - sehe
你喜欢洞穴探险吗? "bufname({expr}):如果 {expr} 是一个数字,则给出该缓冲区编号的名称。 数字零是当前窗口的备用缓冲区。" - romainl
我在思考数字时,将“0”引用为字符串“零”破坏了我的搜索努力。谢谢提供信息... - E.Beach
@romainl 嗯,我喜欢洞穴探险(cd /tmp;apt-get source vim;cd vim*;ctags -R .;vim +tj/buflisted - 完成)。无论如何,我错过了它,因为我也在寻找数字 :) - sehe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接