在没有任何参数的情况下启动vim,然后执行此实验。下面的实验中使用的文件a,b,c和d不需要存在。
:e a
:tabe b
:tabe c
:tabe d
:ls
gt
:ls
这是第5步的输出。
:ls
1 a "a" line 0
2 a "b" line 0
3 #a "c" line 0
4 %a "d" line 1
Press ENTER or type command to continue
这表示“c”是备用文件(标有#
),“d”是当前文件(标有%
)。到目前为止,我们看到了根据文档所期望的内容。如果存在当前文件,则当我们将其他文件作为当前文件时,它将成为备用文件。
但步骤8的输出如下。
:ls
1 %a "a" line 1
2 a "b" line 0
3 a "c" line 0
4 a "d" line 0
Press ENTER or type command to continue
现在“a”已成为预期的当前文件。它标有%
。但是“d”现在还没有成为备用文件。文件“d”不再标有#
。为什么没有“d”成为备用文件?
答案 0 :(得分:4)
"备用文件"是您编辑的上一个文件。
在实际切换缓冲区之前,重要的是创建缓冲区的顺序,而不是访问顺序。
您已修改a
,然后b
,然后c
,然后d
:
a
是"备用文件" b
,b
是"备用文件" c
,c
是"备用文件" d
。由于a
是您编辑的第一个文件,因此没有"之前的文件"所以它没有"备用文件"。
因为d
是您编辑的最后一个文件,所以它不是"备用文件"任何事情。这将是"备用文件"您编辑的下一个文件。
gt
没有d
"备用文件" a
的{{1}},因为您在a
后d
甚至d
之后都没有编辑a
。
在:b a
中:tabedit a
或其他d
,d
为"备用文件" a
。
正如其他人所指出的那样,您所遇到的是使用标签页的许多缺点之一,因为您在其他编辑器中使用标签。它们可以解决它们旨在解决的问题,但是如果你坚持像文件代理一样对待它们,它们有数百种方法可以解决。
"备用文件的全部概念"是一种导航功能,仅适用于缓冲区。
答案 1 :(得分:1)
标签页只是窗口的容器;像Windows一样,在它们之间切换不会改变备用文件。
换句话说:导致用:tabedit
更改备用文件的原因是:edit
部分(这个部分引入了不同的缓冲区,因此前一个变为备用文件),不是:tab
部分。因此,切换标签(使用:tabnext
或gt
)不会影响这一点。这同样适用于像<C-W>w
这样的窗口切换。
:help alternate-file
提供了另一个提示:它位于doc/editing.txt
部分,(正好在上方)指定:
使用Vim编辑文件意味着:
- 将文件读入缓冲区
- 使用编辑器命令更改缓冲区
- 将缓冲区写入文件
醇>
答案 2 :(得分:0)
这是因为每个窗口都是自己的备用文件。由于您还没有在第一个窗口中切换缓冲区,因此您没有该特定窗口的备用文件。