如果我使用vim *.java
这样的多个文件启动vim,我可以使用:n
或:bn
(和其他相关命令)循环打开文件。
但是,如果我只使用一个文件开始并使用:split
加载其他文件(稍后关闭拆分窗口),我可以使用:bn
而不是:n
循环缓冲区。
这两种情况有什么区别?如果我这样做:缓冲两种情况,缓冲区列表中没有任何区别。看起来我似乎在问不必要的问题,但我想知道是否有潜伏在引擎盖下的问题。谢谢。
答案 0 :(得分:9)
TL; DR ::bn
等。总是循环遍历所有缓冲区,:n
等依赖于缓冲区的创建方式。
<强>解释强>:
:n
是:next
的缩写,它在参数列表中移动(您可以通过:args
查看)
:bn
是移动到缓冲区列表中的:bnext
的缩写
使用:sp foo
打开文件不会更改参数列表,但会添加缓冲区,因此不会更改:n
的行为,但会影响:bn
。
另一方面,如果您使用:n foo
打开一个新文件,则会替换参数列表(也会更改:n
等的行为,但不会更改:bn
et的行为。 al。)。
示例会话:
$ vim /tmp/foo /tmp/bar
:args
[foo] bar
:buffers
1 %a "foo" line 1
2 "bar" line 0
这里,缓冲区和参数列表匹配
:sp /tmp/sna
:args
[foo] bar
:buffers
1 #a "foo" line 0
2 "bar" line 0
3 %a "sna" line 1
现在,有一个新缓冲区,但参数列表是相同的
:n /tmp/test /tmp/baz
:args
[test] baz
:buffers
1 a "foo" line 0
2 "bar" line 0
3 # "sna" line 1
4 %a "test" line 1
5 "baz" line 0
现在替换了参数列表,扩展了缓冲区列表。
答案 1 :(得分:4)
import { Injectable, Inject } from '@angular/core';
@Injectable()
export class AgendaService {
}
从当前窗口的缓冲区列表加载下一个缓冲区。
:bnext
从当前窗口的参数列表加载下一个文件。
实际上,参数列表中的每个文件都被加载到缓冲区中,因此被添加到缓冲区列表中,但是,当参数列表的更改可能对缓冲区列表产生一些影响时,更改为缓冲区列表从不对参数列表有任何影响。这意味着两个列表可以相同,但根本不保证。
:next
可以从缓冲区列表加载下一个缓冲区,:n
可以加载参数列表中的下一个文件,但这不应该&# 39;被视为副作用以外的其他任何东西。
在您使用缓冲区时使用:bn
和朋友,在使用参数列表时使用:bn
和朋友。