gpt4 book ai didi

vim::n 和 :bn 之间的区别

转载 作者:行者123 更新时间:2023-12-04 03:31:49 26 4
gpt4 key购买 nike

如果我用多个文件启动 vim,像这样 vim *.java , 我可以使用 :n 循环浏览打开的文件或 :bn (和其他相关命令)。

但是如果我只从一个文件开始并使用 :split 加载其他文件(稍后关闭拆分窗口),我可以使用 :bn 循环缓冲区但不是 :n .

这两种情况有什么区别?如果我在两种情况下都执行 :buffers ,则缓冲区列表中没有任何区别。看起来我在问不必要的问题,但我想了解是否有任何潜伏在引擎盖下的陷阱。谢谢。

最佳答案

TL;博士 ::bn等。始终循环遍历所有缓冲区,:n等取决于缓冲区的创建方式。

说明 :
:n :next的缩写在参数列表中移动(您可以通过执行查看 :args )
:bn :bnext的缩写在缓冲区列表中移动

使用 :sp foo 打开文件不会改变参数列表,但会添加一个缓冲区,因此不会改变 :n 的行为,但确实会影响 :bn .

另一方面,如果你用 :n foo 打开一个新文件,它替换了参数列表(也改变了 :n 等人的行为,但不改变 :bn 等人的行为)。

一个示例 session :

$ 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

现在参数列表被替换,缓冲区列表扩展。

关于vim::n 和 :bn 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39264364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com